【问题标题】:How to filter list of dictionaries by certain Keys?如何按某些键过​​滤字典列表?
【发布时间】:2022-08-19 02:46:42
【问题描述】:

我有以下列表:

list = [{\'Jim\': {\'age\': 20, \'lastname\': \'Smith\'}}, {\'Sarah\': {\'age\': 25, \'lastname\': \'Jones\'}}, {\'Bill\': {\'age\': 30, \'lastname\': \'Lee\'}}] 

我希望能够按键过滤list,例如,如果我想要 Sarah 字典,我希望输出是那个字典。例如:

output = {\'Sarah\': {\'age\': 25, \'lastname\': \'Jones\'}}
  • {k: v for x in d for k, v in x.items() if k == \"Sarah\"}
  • 你在哪个部分有问题?迭代列表?检查列表项键是否符合您的标准?

标签: python list dictionary key


【解决方案1】:

python中有filter函数可以做到这一点:

my_list = = [{'Jim': {'age': 20, 'lastname': 'Smith'}}, {'Sarah': {'age': 25, 'lastname': 'Jones'}}, {'Bill': {'age': 30, 'lastname': 'Lee'}}]

filtered_list = list(filter(lambda x: 'Sarah' in x, my_list))

第一个参数是一个函数本身,它将列表中的每个元素作为参数并返回一个布尔值,表示是否应该保留该元素。

【讨论】:

  • 所以这部分是正确的答案,我只需要将过滤器放入list()。看起来像这样:filtered_list = list(filter(lambda x: 'Sarah' in x, my_list))
【解决方案2】:

我们可以使用 for 循环来遍历列表。这样做,我们在每次循环迭代中得到一个字典。使用会员操作员in,我们可以检查名称是否存在。

lst = [{'Jim': {'age': 20, 'lastname': 'Smith'}}, {'Sarah': {'age': 25, 'lastname': 'Jones'}}, {'Bill': {'age': 30, 'lastname': 'Lee'}}] 
search = "Sarah"
for outer_dict in lst:
    if search in outer_dict:
        print(outer_dict)

输出为:{'Sarah': {'age': 25, 'lastname': 'Jones'}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2020-04-08
    • 1970-01-01
    • 2022-12-02
    相关资源
    最近更新 更多