Как выполнить итерацию словаря по двум и более значениям?

~ могу я использовать такой синтаксис для поиска в словаре по нескольким значениям одновременно? ~

Имеется предположим файл со строками в виде словаря:

{"Number": "120", "Card": "21905678", "Contract": "Yes", "ID": "1"}
{"Number": "111", "Card": "34565699", "Contract": "Yes", "ID": "2"}
{"Number": "123", "Card": "45000012", "Contract": "No", "ID": "3"}

я хочу из этого словаря получать данные по нескольким значениям в условии я ввожу v == '120' и v == '1', то на выходе я должен получить строку где есть эти значения т.е. вот эту

"Number": "120", "Card": "21905678", "Contract": "Yes", "ID": "1"

если в условии v =="123" and v =="3" то на выходе должна быть строка :

{"Number": "123", "Card": "45000012", "Contract": "No", "ID": "3"}

и т.д.

ln = {"Number": "120", "Card": "21905678", "Contract": "Yes", "ID": "2"}

for k, v in ln.items():
    if v == "100" and v == "2":
        print('Number', ln['Number'],end='; ')
        print('ID', ln['ID'])

    elif v == "120" and v == "2":
        print('Number', ln['Number'],end='; ')
        print('ID', ln['ID'])

Ответы (1 шт):

Автор решения: Dmitry

Скорей всего нет необходимости вообщей по сущностям словаря бегать через for. Обратитесь на прямую по ключам и сравните значения

ln = {"Number": "120", "Card": "21905678", "Contract": "Yes", "ID": "2"}

if ln["Number"] == "120" and ln["ID"] == "2":
    print('Number', ln['Number'],end='; ')
    print('ID', ln['ID'])
elif ln["Number"] == "100" and ln["ID"] == "2":
    print('Number', ln['Number'],end='; ')
    print('ID', ln['ID'])

Вывод

Number 120; ID 2

Полный скрипт с чтением данных из файла, выглядит вот так:

with open("test.txt") as file:
    lines = file.readlines()
    for line in lines:
        dict_ = json.loads(line)
        if dict_["Number"] == "120" and dict_["ID"] == "2":
            print('Number', dict_['Number'],end='; ')
            print('ID', dict_['ID'])
        elif dict_["Number"] == "100" and dict_["ID"] == "2":
            print('Number', dict_['Number'],end='; ')
            print('ID', dict_['ID'])
→ Ссылка