当前位置: 首页 > 面试题库 >

从词典列表中提取所有键

韦星文
2023-03-14
问题内容

我正在尝试获取词典列表中所有键的列表,以便填写csv.DictWriter的fieldnames参数。

以前,我有这样的事情:

[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5},
{"name": "Pam", "age": 7}
]

我当时习惯于使用fieldnames = list[0].keys()列表中的第一本字典并提取其键。

现在我有了类似的东西,其中一个字典比另一个字典具有更多的key:value对(可能是任何结果)。新密钥是根据来自API的信息动态添加的,因此它们可能会或可能不会出现在每个字典中,而且我事先也不知道会有多少个新密钥。

[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5, "height":4},
{"name": "Pam", "age": 7}
]

我不能只使用fieldnames = list[1].keys()它,因为它不一定是第二个具有额外键的元素。

一个简单的解决方案是找到键数量最多的字典,并将其用于字段名,但是如果您有这样的示例,则该方法将不起作用:

[
{"name": "Tom", "age": 10},
{"name": "Mark", "age": 5, "height":4},
{"name": "Pam", "age": 7, "weight":90}
]

其中第二和第三个字典都具有3个键,但最终结果应该确实是列表 ["name", "age", "height", "weight"]


问题答案:
all_keys = set().union(*(d.keys() for d in mylist))

编辑 :必须解压缩列表。现在已修复。



 类似资料:
  • 问题内容: 我有一个字典列表,它们在列表中都具有相同的结构。例如: 我想从列表中的每个字典中获取每个项目: 我当然可以遍历列表并使用for循环提取每个值: 但是我的数据集很大。我想知道是否有更快的方法。 问题答案: 如果只需要迭代一次值,请使用生成器表达式: 另一个(深奥的)选项可能与-一起使用-它可能会比生成器表达式快一点,或者不快一点,具体取决于情况: 而且,如果您绝对需要一个列表,则列表理解

  • 我想为我的搜索引擎从数据库中提取一个基本的同义词列表。这包括通常拼写的名字,如Shaun vs.Shawn,Muhammad的不同变体,命名实体的首字母缩写,如United Nations(UN)或SARS(Severe acute respiratory syndrome)。 在提取之后,这个同义词列表将被放置在服务器中,并以这样的方式存储--相关术语/同义词的字符串。 示例 我使用了jaws

  • 我有一个对django视图的AJAX请求调用(使用JQuery)。它发送以查看此类数据: 在我的django看来,我试图得到这样的列表: 其中返回而返回空数组。 如何可能从请求接收字典数组?

  • 问题内容: 给定一个像这样的字典: 如何创建一个字典列表,该列表结合了第一个字典键的各种值?我想要的是: 问题答案: 我认为您想要笛卡尔积,而不是排列,在这种情况下可以提供帮助:

  • 问题内容: 我有字典。 如何将的所有值提取到列表中? 问题答案: 如果你只需要字典的键,和使用:。 如果你只需要在字典中的值,和使用:。 如果您想同时使用键和值,请使用:返回一个元组列表。

  • 问题内容: 我有一个字典列表,我需要从字典的给定键中获取值的列表(所有字典都具有相同的键)。 例如,我有: 我需要得到1,2,3 当然,我可以通过以下方式获得它: 但是我想找到一种更好的方法。 问题答案: 使用简单的列表推导(如果您确定每个字典都有键): 否则,您需要首先检查是否存在: