2011-03-09 6 views
4

私はPythonにはあまり新しくないので、これは私よりも簡単だと私を許してください。dictsのリストを文字列に変換する

次のように私はdictsのリストが表示されています:

[{'directMember': 'true', 'memberType': 'User', 'memberId': '[email protected]'}, 
{'directMember': 'true', 'memberType': 'User', 'memberId': '[email protected]'}, 
{'directMember': 'true', 'memberType': 'User', 'memberId': '[email protected]'}] 
私はmemberIdsの単純な文字列を生成したい

、など

[email protected][email protected][email protected]

しかし、リストを文字列に変換するすべての方法は、 dictsが関わっているので、eは失敗しました。

アドバイスはありますか?

答えて

11
', '.join(d['memberId'] for d in my_list) 

あなたはあなたがPythonを初めて使い慣れたと言いましたので、私はこの仕組みについて説明します。

str.join()メソッドは、(リストのような)反復可能な要素の各要素を結合し、そのメソッドが呼び出された文字列をセパレータとして使用します。

このメソッドに提供されるiterableは、ジェネレータ式(d['memberId'] for d in my_list)です。これは、実際にリストを作成することなく、リスト内包表記[d['memberId'] for d in my_list]によって作成されたリスト内にある各要素を本質的に提供します。

1

dictsにアクセスします。

', '.join(d['memberId'] for d in L) 
5

これらの1つのライナーは問題ありませんが、初心者の方にはうれしいかもしれません。ここでは、彼らが破壊されています

list_of_dicts = (the list you posted) 

[OK]を、私たちは、リストを持って、それの各メンバーは、dictのです。ここlist comprehensionです:

[expr for d in list_of_dicts] 

これはfor d in list_of_dicts ...を言ってようなものです。 exprが各dについて評価され、新しいリストが生成される。 ifでそれらの一部だけを選択することもできます。ドキュメントをご覧ください。

だから、何をexprしたいですか?各Dict dには、キー'memberId'の値が必要です。それはd['memberId']です。だから今、リスト内包表記は次のようになります。これは、カンマでそれらを一緒に入れて、今、私たちに電子メールアドレスのリストを与える

[d['memberId'] for d in list_of_dicts] 

、我々は(ドキュメントを参照)joinを使用します。

', '.join([d['memberId'] for d in list_of_dicts]) 

私は見ます他のポスターはjoinの引数リストの中の[]を省略して動作します。それを見なければならない、なぜ私はあなたがそれを残すことができるのか分からない。 HTH。

+0

Aaaaaaand私はAndrewがすでに私にそれを打つのを見ます。しかたがない。 – Vamana

関連する問題