Python:如何访问列表中具有特定键值的字典

标签 python list dictionary key

我有一个字典列表:

[
{"START":"Denver", "END":"Chicago", "Num":0},
{"START":"Dallas", "END":"Houston", "Num":3},
{"START":"Virginia", "END":"Boston", "Num":1},
{"START":"Washington", "END":"Maine", "Num":7}
]

如何以大多数 Pythonic 方式访问此列表中包含 "START":"Virginia", "END":"Boston" 的字典?

最佳答案

最 Pythonic 的方式可能是列表理解:

[ d for d in dict_list if d["START"] == "Virginia" and d["END"] == "Boston" ]

正如 mgilson 所指出的,如果您假设列表中只有一个项目具有该对位置,则可以使用 next 和相同的生成器表达式,而不是方括号。这将只返回匹配的字典,而不是包含它的单项列表:

trip = next( d for d in dict_list 
               if d["START"] == "Virginia" and d["END"] == "Boston" )

无论哪种方式,结果都引用与原始列表相同的字典对象,因此您可以进行更改:

trip["Num"] = trip["Num"] + 1

当通过原始列表访问时,这些更改将存在:

print(dict_list[2]["Num"])    # 2

正如 Ashwini Chaudhary 在他的回答中指出的那样,您的搜索本身可能被指定为字典。在那种情况下,生成器表达式中的 if 条件略有不同,但逻辑在其他方面是相同的:

search = { "START": "Virginia", "END": "Boston" }
trip = next(d for d in dict_list if all(i in d.items() for i in search.items()))

关于Python:如何访问列表中具有特定键值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14366061/

相关文章:

Java 将 Set<Set<String>> 转换为 List<List<String>>

javascript - 如何创建字典 [Key : value] in jQuery

arrays - 从映射类型的复杂数组中提取值到字符串

python - 更改 QTableWidget 单个单元格的可编辑性

c# - 如何打乱列表

bash - 将文本文件中的逗号分隔列表转换为 bash 中的列

swift - 为字典中的键分配值的问题

python - 接受与关键字/标准库冲突的变量名约定

python - python中使用正则表达式替换特殊字符

python - 使用 Python 计算表面细胞面积时出现奇怪的 VTK 结果