Сравнение двух Python диктов: CS50 PSET6 DNA - PullRequest
1 голос
/ 04 августа 2020

Нужна помощь в сравнении двух dicts в Python.

Я хотел бы увидеть, все ли пары ключ: значение в result_dict соответствуют какой-либо из соответствующих пар ключ: значение в database_dict . Как мне перебрать разные result_dict.keys , чтобы проверить, совпадает ли соответствующее значение со значением в database_dict ? И если есть полное совпадение, верните «имя». Спасибо за вашу помощь. Таблицы ниже:

result_dict:

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

database_dict:

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')])

1 Ответ

0 голосов
/ 04 августа 2020

Следующая функция возвращает имена людей, которые соответствуют 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)
...