繁体   English   中英

比较两个 Python 字典:CS50 PSET6 DNA

[英]Comparing two Python dicts: CS50 PSET6 DNA

需要一些帮助来比较 Python 中的两个字典。

我想看看result_dict中的所有键:值对是否与database_dict中任何相应的键:值对匹配。 如何遍历不同的result_dict.keys以检查相应的值是否与database_dict中的匹配? 如果存在完全匹配,则返回“名称”。 谢谢你的帮助。 字典如下:

结果字典:

{'AGATC': 4, 'AATG': 1, 'TATC': 5}

数据库字典:

OrderedDict([('name', 'Alice'), ('AGATC', '2'), ('AATG', '8'), ('TATC', '3')])  
OrderedDict([('name', 'Bob'), ('AGATC', '4'), ('AATG', '1'), ('TATC', '5')])  
OrderedDict([('name', 'Charlie'), ('AGATC', '3'), ('AATG', '2'), ('TATC', '5')])

下面function返回匹配result_dict的人名。 它使用 pop 删除名称值并将分数转换为整数以允许与 result_dict 进行比较。

database_dicts = [OrderedDict([('name', 'Alice'), ('AGATC', '2'), ('AATG', '8'), ('TATC', '3')]),
OrderedDict([('name', 'Bob'), ('AGATC', '4'), ('AATG', '1'), ('TATC', '5')]),
OrderedDict([('name', 'Charlie'), ('AGATC', '3'), ('AATG', '2'), ('TATC', '5')])]

result_dict = {'AGATC': 4, 'AATG': 1, 'TATC': 5}

def get_name(database_dicts, result_dict):
    names = []
    for dd in database_dicts:
        name = dd['name']
        dd.pop('name')
        dd = {key: int(value) for key, value in dd.items()}
        if dd == result_dict:
            names.append(name)
    return names

names = get_name(database_dicts, result_dict)
print(names)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM