我有下面的词典和字典列表, 如果有匹配项,我想返回人名
mydblist = [{'name': 'Alice', 'AGATC': '2', 'AATG': '8', 'TATC': '3'},{'name': 'Bob', 'AGATC': '4', 'AATG': '1', 'TATC': '5'},{'name': 'Charlie', 'AGATC': '3', 'AATG': '2', 'TATC': '5'}]
dna_dict = {'AGATC': 4, 'AATG': 1, 'TATC': 5}
现在,我需要从字典mydict_list的列表中打印名称“ Bob”,因为他与dna_dict完全匹配,
或在找不到匹配项的情况下不打印匹配项
非常感谢您的提前支持
答案 0 :(得分:0)
使用提供的清单,我在下面编写了解决方案。它只是比较dict键。一个字典具有str类型,而另一个具有int类型,这就是代码将其转换为类型的原因。
def compare_dicts(a, b):
"""
Compare all keys of A with the same key in B
"""
for key in a.keys():
if key in b:
if a[key] != int(b[key]):
return False
return True
for dict_obj in mydblist:
if compare_dicts(dna_dict, dict_obj):
print(dict_obj['name'])
答案 1 :(得分:0)
尝试
mydblist = [{'name': 'Alice', 'AGATC': '2', 'AATG': '8', 'TATC': '3'},{'name': 'Bob', 'AGATC': '4', 'AATG': '1', 'TATC': '5'},{'name': 'Charlie', 'AGATC': '3', 'AATG': '2', 'TATC': '5'}]
# Here i changed dna_dict value integer to string
dna_dict = {'AGATC': '4', 'AATG': '1', 'TATC': '5'}
for i in mydblist:
if i["AGATC"] == dna_dict["AGATC"] and i["AATG"] == dna_dict["AATG"] and i["TATC"] == dna_dict["TATC"]:
print(i["name"])