#python
#python
Вопрос:
Например, если есть словарь student_gpa, где:
student_gpa = {'Alex': 3.00,
'John': 3.50,
'Jennifer': 3.75}
и список кортежей student_age, где:
student_age = [('Mike', 14),
('Alex', 13),
('John', 15)]
Как мне проверить, являются ли ‘Mike’, ‘Alex’ и ‘John’ ключами внутри словаря student_gpa?
Ответ №1:
Чтобы проверить, является ли объект ключом в a dict
, вы можете вызвать dict.keys()
, который вернет a list
всех ключей в dict
.
name in dict.keys()
Однако, если вы просто хотите проверить, что все ваши ученики существуют в dict
, вы можете использовать all()
и цикл, чтобы определить, все ли имена найдены в списке keys
.
>>> all(student in student_gpa.keys() for student, age in student_age)
#False
>>> student_gpa['Mike'] = 1.0
>>> all(student in student_gpa.keys() for student, age in student_age)
#True
Ответ №2:
Вы можете перебирать список, проверяя первый элемент каждого кортежа. Затем проверьте, является ли это значение ключом:
for i in student_age:
if i[0] in student_gpa.keys():
print("yes")`
Использование student_gpa.keys()
возвращает объект просмотра ключей в student_gpa
. Объект представления является итерируемым. Вот хорошая статья, объясняющая .keys()
.
Ответ №3:
Или вы могли бы попробовать использовать zip
, и попробуйте использовать генератор с all
, как показано ниже:
print(all(i in student_gpa.keys() for i in list(zip(*student_age))[0])
Выходной сигнал:
False
Ответ @PacketLoss тоже хорош:
print(all(x in student_gpa.keys() for x, y in student_age))
Выходной сигнал:
False
Ответ №4:
Вы можете сделать это с помощью цикла.
student_gpa = {'Alex': 3.00,
'John': 3.50,
'Jennifer': 3.75}
student_age = [('Mike', 14),
('Alex', 13),
('John', 15)]
student_gpa_keys = list(student_gpa.keys())
list_keys = [item[0] for item in student_age]
for ele in list_keys:
if ele in student_gpa_keys:
print(ele)
Результат:
Alex
John
Ответ №5:
Вот то, что сработало для меня
tuple_list = [("a", "b"),("c", "d")]
first_tuple_elements = [a_tuple[0] for a_tuple in tuple_list]#Getting all tupples first element
student_gpa = {'a': 3.00,
'c': 3.50}
for key in first_tuple_elements:
if key in list(student_gpa.keys()):
print(key)
Выходной сигнал:
a
c
Чтобы проверить, все ли первые элементы списка кортежей являются ключевыми в словаре
print(first_tuple_elements in list(student_gpa.keys()))
Вывод:
True
Чтобы проверить, все ли ключи of dic присутствуют в списке кортежей и наоборот
print(list(student_gpa.keys())==first_tuple_elements)
Вывод:
True
Ответ №6:
Вы можете сделать это, используя понимание списка.
student_gpa = {'Alex': 3.00,
'John': 3.50,
'Jennifer': 3.75}
student_age = [('Mike', 14),
('Alex', 13),
('John', 15)]
students = [std for std, _ in student_age if std in student_gpa]
print (students)
Ответ №7:
Я не понимаю, почему некоторые ответы настолько привязаны к использованию однострочного кода. ИМХО, приведенное ниже простое и понятное, особенно для новичка.
for student, age in student_age:
if student in student_gpa: # no need to use student_gpa.keys() to check if a key exists
print(student, 'is in the dictionary')
# Do something
else:
print(student, 'is not in the dictionary')
# Do something else