[英]List of dictionaries with comprehension in python
我有以下詞典列表:
ld=[{'a':10,'b':20},{'p':10,'u':100}]
我想寫一個這樣的理解:
[ (k,v) for k,v in [ d.items() for d in ld ] ]
基本上我想迭代列表中的字典並獲取每個字典的鍵和值,並做某事。
示例:此示例的一個示例輸出將是例如沒有某些鍵的另一個字典列表:
ld=[{'a':10,'b':20},{'p':10,'u':100}]
new_ld=[{'a':10},{'p':10}]
但是,上述理解是不正確的。 任何幫助,將不勝感激。
正確的列表理解是[[(k,v) for k,v in d.items()] for d in ld]
演示:
>>> ld = [{'a': 10, 'b': 20}, {'p': 10, 'u': 100}]
>>> [[(k,v) for k,v in d.items()] for d in ld]
[[('a', 10), ('b', 20)], [('p', 10), ('u', 100)]]
>>> [[(k,v) for k,v in d.items() if k not in ['b','u']] for d in ld]
[[('a', 10)], [('p', 10)]]
使用itertools.chain.from_iterable
來展平序列:
>>> from itertools import chain
>>> ld = [{'a':10,'b':20},{'p':10,'u':100}]
>>> list(chain.from_iterable(d.items() for d in ld))
[('a', 10), ('b', 20), ('p', 10), ('u', 100)]
另一種解決方案是使用雙for
理解/發電機,但我覺得他們非常難以閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.