【发布时间】:2020-07-26 11:44:09
【问题描述】:
我有一个字典列表和一本字典。我需要将列表中的每个字典与单独的字典进行比较,如果匹配则打印出特定的键。
例如:
# The list of dictionaries is created out of csv file
list_of_dicts = {
OrderedDict([('name', 'Alice'), ('A', '2'), ('G', '8'), ('C', '3')])
OrderedDict([('name', 'Bob'), ('A', '4'), ('G', '1'), ('C', '5')])
OrderedDict([('name', 'Charlie'), ('A', '3'), ('G', '2'), ('C', '5')])
}
sep_dict = {'name': 0, 'A': 4, 'G': 1, 'C': 5}
for i in list_of_dicts:
if i == sep_dict:
sep_dict['name'] = i['name']
比较后,我想根据 list_of_dicts 更新 sep_dict 'name' 键。我知道互联网上有类似的问题,但我对 python 编程还是新手,不知道如何实现它们。我尝试过简单的 for 循环和 if 语句,但它们不起作用。我也尝试过将字典转移到set,但无法理解其背后的逻辑。
【问题讨论】:
-
1) list_of_dicts 似乎无效,你的意思是这个
[OrderedDict()...]2) 预期输出是什么? -
是的,不正确。我已经从终端窗口复制了它,它已经是一个输出了。
-
您能解释一下您要解决的问题吗,这听起来像是XY problem
-
马克,谢谢你的回复。我已经描述了我需要实现的一切。我需要查找是否可以在字典列表中找到 dictionary_1(列表:dictionary_1;dictionary_2;dictionary_3 等)。如果找到,那么我需要打印出终端的特定密钥。我不知道如何在字典列表中找到 dictionary_1 的匹配项。
-
来自您的代码 sn-p。 1.您的“list_of_dicts”不是列表,而是字典。 2.在将“sep_dict”与“list_of_dicts”中的每个字典进行比较时,请注意您的值类型不同,这在python中是敏感的。 3、当两个字典相同时,“sep_dict['name'] = i['name']”有什么意义?如果前置条件(即“i == sep_dict”)的计算结果为 true,则它们已经是等价的。
标签: python dictionary