回答
您可以使用chain.from_iterable
:
>>> from itertools import chain
>>> l = [{1: "a"}, {2: "b"}]
>>> list(chain.from_iterable(l))
[1, 2]
或者,如果你用一個列表理解,你可以跳過.keys()
。在python 2.x中,您還可以避免用這種方式構建不必要的列表:
>>> [k for d in l for k in d]
[1, 2]
如果使用以下代碼,則不需要導入任何內容。
>>> map(lambda x: x.keys()[0], [{1: "a"}, {2: "b"}])
[1, 2]
雖然它不乾淨......
只能在一個鍵的情況下工作,但是。 – DSM 2013-02-10 15:55:50
如果你想避免額外的輸入,你可以用一個列表理解:
>>> l = [{1: 'a'}, {2: 'b'}]
>>> [k for d in l for k in d.keys()]
[1, 2]
非常簡單的方法(不導入任何東西) :
d = [{1: "a"}, {2: "b"}]
keys = [l.keys() for l in d]
但是,這返回[[1], [2]]
。
爲了避免這種情況,你可以將其更改爲:
d = [{1: "a"}, {2: "b"}]
keys = []
for l in d:
for key in l: # iterating through a dictionary always gives the key
keys.append(key)
的list-comprehension相當於上面是:
d = [{1: "a"}, {2: "b"}]
keys = [key for l in d for key in l.keys()]
您還可以使用built-in d.update(d2)
feature,它結合了字典:
d = [{1: "a"}, {2: "b"}]
new_dict = {}
for l in d: new_dict.update(l)
new_dict.keys()
這會覆蓋其中一個鍵值對,如果t字典有兩個相同的密鑰(如[{1: 'a'}, {1: 'b'}]
)。
如果你想有一個列表,如果你想一套sum((m.keys() for m in l), [])
,
set(sum((m.keys() for m in l), []))
。
儘管這樣做會起作用,但它會顯示二次方行爲(如果列表長度延長十倍,則執行總和的時間會延長100倍)。 – DSM 2013-02-10 16:06:12
- 1. Enum:獲取密鑰列表
- 2. 獲取這些密鑰值相等的密鑰列表
- 3. LoadingCache的密鑰列表
- 4. 如何使用陣列中的密鑰命名陣列密鑰
- 5. VBA集合:密鑰列表
- 6. Java UIManager密鑰列表
- 7. Membase - 使用TAP獲取所有密鑰的列表
- 8. Java GSON:獲取JSONObject下所有密鑰的列表
- 9. 從unordered_map獲取密鑰和值列表
- 10. 從redis獲取密鑰列表?
- 11. HBase Shell:獲取行密鑰列表
- 12. 獲取散列表中密鑰列表的時間複雜度?
- 13. 如何獲取mongodb中的密鑰的完整列表
- 14. 輸入密鑰對密鑰列表程序不起作用
- 15. 如何獲取字典中的密鑰列表?
- 16. 將列表的列表寫入CSV,但只能獲取密鑰
- 17. 如何獲得OpenSSL中的HMAC密鑰
- 18. 如何獲得用pycassa存儲在Cassandra列族中的所有密鑰?
- 19. 在Prolog對列表中找到密鑰
- 20. 在散列表中修改密鑰?
- 21. 密鑰表中Java9
- 22. 列出所有memcached密鑰/值
- 23. 從文件中的密鑰列表中查找文件中缺失的密鑰
- 24. 從字典列表中提取所有密鑰
- 25. 如何序列化Python列表中的JSON密鑰?
- 26. 如何從值列表中獲取密鑰?
- 27. 如何獲得具有相同最高值的所有密鑰?
- 28. 帶字典的列表 - 所有密鑰的計數值(Python)
- 29. 包含元素列表的YAML密鑰
- 30. Python列表,以不同的密鑰
每本字典只有一個條目嗎?如果是這樣,你最好將數據存儲爲'{1:'a',2:'b'}'或'[(1,'a'),(2,'b')]' – Eric 2013-02-10 15:55:58