✓ @ anvd , как я понял из вашей проблемы, вы хотите искать наличие значений словаря d внутри списков rating1 & rating2 .
Пожалуйста, прокомментируйте, если я ошибаюсь или приведенное ниже решение не удовлетворит вашу потребность.
Я предложу вам создать 1больше словарь d_lists , который отображает имя списков в исходные объекты списка.
Шаги:
✓ Возьмите каждый ключ (имя списка) с d .
✓ Найдите наличие этого ключа в d_lists .
✓ Возьмите соответствующий объект списка из d_lists .
✓ Найти значение, указанное ключом, в d внутри выбранного списка.
✓ Если элемент найден, остановить итерацию и найти наличие следующего значения в d .
✓ Напечатайте соответствующие сообщения.
Вот ваш измененный код (с небольшими изменениями)
Я показал еще один хороший пример позже, после приведенного ниже примера кода.
rating_1 = ['nlo', 'yes']
rating_2 = ['no', 'yes']
# Creating a dictionary that maps list names to themselves (original list object)
d_lists = {
"rating_1": rating_1,
"rating_2": rating_2,
}
# Creating a dictionary that maps list to the item to be searched
# We just want to check whether 'rating_1' & 'rating_2' contains 'no' or not
d = {'rating_2': u'no', 'rating_1': u'no'}
# Search operation using loop
for list_name in d:
if list_name in d_lists:
found = False
for item in d_lists[list_name]:
if item == d[list_name]:
found = True
break
if found:
print "'" + d[list_name] + "' exists in", d_lists[list_name];
else:
print "'" + d[list_name] + "' doesn't exist in", d_lists[list_name]
else:
print "Couldn't find", list_name
Вывод:
'no' exists in ['no', 'yes']
'no' doesn't exist in ['nlo', 'yes']
Теперь рассмотрим другой пример.
Еще один большой пример:
rating_1 = ['no', 'yes', 'good', 'best']
rating_2 = ['no', 'yes', 'better', 'worst', 'bad']
fruits = ["apple", "mango", "pineapple"]
# Creating a dictionary that maps list names to themselves (original list object)
d_lists = {
"rating_1": rating_1,
"rating_2": rating_2,
"fruits": fruits,
}
# Creating a dictionary that maps list to the item to be searched
# We just want to check whether 'rating_1' & 'rating_2' contains 'no' or not
d = {'rating_2': u'best', 'rating_1': u'good', 'fruits2': "blackberry"}
# Search operation using loop
for list_name in d:
if list_name in d_lists:
print "Found list referred by key/name", list_name, "=", d_lists[list_name];
found = False
for item in d_lists[list_name]:
if d[list_name] == item:
found = True
break
if found:
print "'" + d[list_name] + "' exists in", d_lists[list_name], "\n";
else:
print "'" + d[list_name] + "' doesn't exist in", d_lists[list_name], "\n"
else:
print "Couldn't find list referred by key/name ", list_name, "\n"
Вывод:
Found list referred by key/name rating_2 = ['no', 'yes', 'better', 'worst', 'bad']
'best' doesn't exist in ['no', 'yes', 'better', 'worst', 'bad']
Couldn't find list referred by key/name fruits2
Found list referred by key/name rating_1 = ['no', 'yes', 'good', 'best']
'good' exists in ['no', 'yes', 'good', 'best']