70

辞書のリストがあり、このリストの各要素にキーを追加したいと考えています。私は試した:

result = [ item.update({"elem":"value"}) for item in mylist ]

しかし、更新メソッドは None を返すため、結果リストは None でいっぱいです。

result = [ item["elem"]="value" for item in mylist ]

構文エラーを返します。

4

7 に答える 7

59

更新された辞書への参照は古い辞書への参照と同じであるため、辞書の新しいリストの作成について心配する必要はありません。

 for item in mylist:
    item.update( {"elem":"value"})
于 2012-12-28T14:37:53.097 に答える
4
>>> a = [ { 1:1 }, {2:2}, {3:3} ]
>>> for item in a:
...     item.update( { "test": "test" } )
... 
>>> a
[{'test': 'test', 1: 1}, {'test': 'test', 2: 2}, {'test': 'test', 3: 3}]

リスト内包表記を正しく使用していません。呼び出しitem.updateは値を返すNoneため、新しく作成されたリストはNone期待dict値ではなく値でいっぱいになります。

リストには値への参照が保持されているため、リスト内の項目をループし、それに応じてそれぞれを更新するだけで済みdictます。

于 2012-12-28T14:37:32.720 に答える
2

リスト内包表記を使用しないか、元の dict と新しいキーに基づいて新しいdict を返します。

[dict(list(item.items()) + [("elem", "value")]) for item in mylist]
于 2012-12-28T14:38:31.927 に答える