快速获取字典列表中的键的方法
Quick way of getting the keys in a list of dictionaries
考虑以下示例:
m = [{'a':1},{'b':2}]
我想找到一种在 m
中形成键列表的简短方法,就像 ['a','b']
一样。除了使用传统的 for 循环之外,最短或最简单的方法是什么?也许是语法糖?
您可以使用列表理解,for 循环的语法糖:
keys_list = [x for d in m for x in d.keys()]
请注意,如果您的词典有共同的关键字,它们将在结果中出现不止一次。
如果你只想要唯一键,你可以这样做:
keys_list = list(set(x for d in m for x in d.keys()))
一个简单的双 for-loop 和 list-comprehension 应该可以解决问题。遍历列表,对于列表中的每个元素,遍历键
In [5]: m = [{'a':1},{'b':2}]
In [6]: [k for item in m for k in item]
Out[6]: ['a', 'b']
如果列表中有重复的键,只需将最终输出转换为集合,然后转换为列表即可获得唯一键
In [19]: m = [{'a':1, 'b':2},{'a':3,'b':4}]
In [20]: r = [k for item in m for k in item]
In [21]: r
Out[21]: ['a', 'b', 'a', 'b']
In [22]: r = list(set(r))
In [23]: r
Out[23]: ['b', 'a']
- 将所有字典键提取到列表列表
- 通过itertools.chain
将它们转换为一个列表
from itertools import chain
a = [{'a': 1, 'c': 2}, {'b': 2}]
b = [d.keys() for d in a]
list(chain(*b))
将return:
['c', 'a', 'b']
如果您只想要唯一键,请执行以下操作:
m = [{'a':1},{'b':2},{'b':3}]
print({x for d in m for x in d})
这一个包含重复项:
print([x for d in m for x in d])
考虑以下示例:
m = [{'a':1},{'b':2}]
我想找到一种在 m
中形成键列表的简短方法,就像 ['a','b']
一样。除了使用传统的 for 循环之外,最短或最简单的方法是什么?也许是语法糖?
您可以使用列表理解,for 循环的语法糖:
keys_list = [x for d in m for x in d.keys()]
请注意,如果您的词典有共同的关键字,它们将在结果中出现不止一次。
如果你只想要唯一键,你可以这样做:
keys_list = list(set(x for d in m for x in d.keys()))
一个简单的双 for-loop 和 list-comprehension 应该可以解决问题。遍历列表,对于列表中的每个元素,遍历键
In [5]: m = [{'a':1},{'b':2}]
In [6]: [k for item in m for k in item]
Out[6]: ['a', 'b']
如果列表中有重复的键,只需将最终输出转换为集合,然后转换为列表即可获得唯一键
In [19]: m = [{'a':1, 'b':2},{'a':3,'b':4}]
In [20]: r = [k for item in m for k in item]
In [21]: r
Out[21]: ['a', 'b', 'a', 'b']
In [22]: r = list(set(r))
In [23]: r
Out[23]: ['b', 'a']
- 将所有字典键提取到列表列表
- 通过itertools.chain 将它们转换为一个列表
from itertools import chain
a = [{'a': 1, 'c': 2}, {'b': 2}]
b = [d.keys() for d in a]
list(chain(*b))
将return:
['c', 'a', 'b']
如果您只想要唯一键,请执行以下操作:
m = [{'a':1},{'b':2},{'b':3}]
print({x for d in m for x in d})
这一个包含重复项:
print([x for d in m for x in d])