如何在保留所有元素的同时提取字典列表中的所有键?(Python)

如何在保留所有元素的同时提取字典列表中的所有键?(Python),python,dictionary,key,Python,Dictionary,Key,假设我有以下词典列表: list1 = [{'1': 1}, {'1': 1}, {'0': 1}, {'1': 1}, {'1': 1}, {'0': 1}] 如何将所有键提取到单个列表中?所需的输出应如下所示: li = [1,1,0,1,1,0] 我试着用 randlis = [list[i].keys() for i in range len(list1)] 这不起作用,因为输出包括以下类型: [dict_keys(['1']), dict_keys(['1']), dict_ke

假设我有以下词典列表:

list1 = [{'1': 1}, {'1': 1}, {'0': 1}, {'1': 1}, {'1': 1}, {'0': 1}]
如何将所有键提取到单个列表中?所需的输出应如下所示:

li = [1,1,0,1,1,0]
我试着用

randlis = [list[i].keys() for i in range len(list1)]
这不起作用,因为输出包括以下类型:

[dict_keys(['1']), dict_keys(['1']), dict_keys(['0'])]

谢谢

您可以使用
列表理解

[key for _dict in list for key in _dict.keys()]
#['1', '1', '0', '1', '1', '0']

注意。不应使用
list
str
int
等命名变量。我在示例中保持不变,以便您更好地理解循环。请将您的var名称更改为其他名称。

您可以使用itertools中的链:

list1 = [{'1': 1}, {'1': 1}, {'0': 1}, {'1': 1}, {'1': 1}, {'0': 1}]

from itertools import chain

randlis = list(chain(*list1))

print(randlis)
['1', '1', '0', '1', '1', '0']

不要使用
list
作为变量名,这样做会覆盖内置的
list
类型的构造函数。@blorgon啊,我明白了。谢谢问题是你已经覆盖了
列表
作为你的字典。这是非常糟糕的做法。如果您调用字典
dictionary
,那么
列表(dictionary.keys())
就是解决方案。这是否回答了您的问题?作为提示,OP似乎希望将这些键转换为
int
,至少根据它们期望的结果
li=[1,1,0,1,1,0]
,我还建议在这里使用描述性迭代器变量以帮助可读性。