回答
您可以使用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