【问题标题】:How can I extract all keys in a list of dictionaries while keeping all elements? (Python)如何在保留所有元素的同时提取字典列表中的所有键? (Python)
【发布时间】:2021-02-25 23:02:11
【问题描述】:

假设我有以下字典列表:

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'])]

谢谢!

【问题讨论】:

  • 不要使用list 作为变量名,这样做会覆盖内置的list 类型的构造函数。
  • @blorgon 啊,我明白了。谢谢!
  • 那么问题是你已经覆盖了list 来充当你的字典。这是非常非常糟糕的做法。如果您将字典称为dictionary,那么list(dictionary.keys()) 就是解决方案。

标签: python dictionary key


【解决方案1】:

您可以使用来自 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']

【讨论】:

    【解决方案2】:

    您可以使用 list comprehension 简单地循环遍历元素

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

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

    【讨论】:

    • 提醒一下,OP 似乎希望将这些键转换为 int,至少根据他们想要的结果 li = [1,1,0,1,1,0] 我还建议在此处使用描述性迭代器变量以提高可读性.
    猜你喜欢
    • 1970-01-01
    • 2021-06-01
    • 2021-09-14
    • 2016-04-07
    • 2021-01-04
    • 1970-01-01
    • 2023-03-21
    • 2019-08-09
    相关资源
    最近更新 更多