【问题标题】:Getting a distinct list of values from a list of dicts从字典列表中获取不同的值列表
【发布时间】:2022-01-17 20:26:31
【问题描述】:

我有一个这样的字典列表:

[{'value': 'apple', 'blah': 2}, 
 {'value': 'banana', 'blah': 3} , 
 {'value': 'banana', 'blah': 4}]

我想要基于一个字段的不同数据,例如“价值”,所以我想要这个输出 ['apple', 'banana']

最好的方法是什么?

【问题讨论】:

  • 你想要一个键的不同值吗?我不明白为什么 2、3、4 不会包含在不同的值中。
  • 我建议查看set 类型

标签: python list dictionary


【解决方案1】:

你试过用这段代码吗?

list(set(element.get('value') for element in input_collection))

或者即使应用@csjh的建议也会很好

list(set(element['value'] for element in input_collection if 'value' in element))

【讨论】:

  • 我认为 element['value'] for element in input_collection if 'value' in element 或类似的方法会更好,而不是使用 .get(),否则可能会有一个 None
【解决方案2】:

我们可以尝试设置理解(如果'value' 键不存在的情况下添加,谢谢@0x263A):

out = list({d['value'] for d in lst if 'value' in d})

如果顺序很重要,我们也可以使用dict.fromkeys

out = list(dict.fromkeys([d['value'] for d in lst if 'value' in d]).keys())

输出:

['apple', 'banana']

【讨论】:

  • 如果value 不在d 中,这将导致KeyError,但可以通过将if 'value' in d 添加到理解中轻松修复。
  • @0x263 一个很好的建议。谢谢
猜你喜欢
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2013-08-29
相关资源
最近更新 更多