Как выполнить итерацию словаря по двум и более значениям?
~ могу я использовать такой синтаксис для поиска в словаре по нескольким значениям одновременно? ~
Имеется предположим файл со строками в виде словаря:
{"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'])