【问题标题】:Python: list of dictionaries, how to get values of a specific key for multiple items of the list?Python:字典列表,如何获取列表中多个项目的特定键的值?
【发布时间】:2013-07-09 06:48:08
【问题描述】:

我有一个字典列表,例如:

dict_list = [{'key1': 'dict1_value1', 'key2': 'dict1_value2', 'key3': 'dict1_value3'},
{'key1': 'dict2_value1', 'key2': 'dict2_value2', 'key3': 'dict2_value3'},
{'key1': 'dict3_value1', 'key2': 'dict3_value2', 'key3': 'dict3_value3'},
{'key1': 'dict4_value1', 'key2': 'dict4_value2', 'key3': 'dict4_value3'},
{'key1': 'dict5_value1', 'key2': 'dict5_value2', 'key3': 'dict5_value3'}]

获取第二个列表项的“key3”的值类似于:

dict_list[1]['key3']
dict2_value3

下面的代码还从列表中返回项目 2:4:

dict_list[1:3]

如果我想从列表中获取多个项目的“key3”值怎么办。喜欢

dict_list[1:3]['key3']

类似于我们在 MATLAB 中所做的事情。

【问题讨论】:

    标签: python dictionary key-value


    【解决方案1】:
    >>> [x.get('key3') for x in dict_list[1:3]]
    ['dict2_value3', 'dict3_value3']
    

    【讨论】:

    • 为什么是get?在 OP 的示例中,密钥始终存在,这意味着您可以安全地使用x['key3']。此外,使用get 会在列表中插入不需要的Nones,因此它不能解决任何问题。如果不能保证密钥的存在,那么[x['key3'] for x in dict_list[1:3] if 'key3' in x][el for el in (x.get('key3') for x in dict_list[1:3]) if el is not None] 都可以解决问题。
    • @Bakuriu 同意你的观点,但是不会插入不需要的none,因为key的存在是真的,
    【解决方案2】:
    [dict_list[i]['key3'] for i in xrange(1,3)]
    

    [operator.itemgetter('key3')(dict_list[i]) for i in range(1,3)]
    

    map(operator.itemgetter('key3'), itertools.islice(dict_list, 1,3))
    

    【讨论】:

    • itemgetter 在该列表理解中没有任何业务:p。不过第一和第三还可以。请记住,map 在 Python3 中不再返回列表
    【解决方案3】:

    [x['key3'] for x in dict_list[1:3]]

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 2017-10-23
      • 2020-03-14
      • 2013-08-29
      • 2021-02-10
      • 2023-01-24
      • 1970-01-01
      相关资源
      最近更新 更多