Проверка значений кортежей в словаре
У меня есть словарь, кортеж которого является его ключом, а также кортеж как его значения. Мне нужен способ доступа к значениям словаря на основе его ключей. Например:
d = {}
d = { (1, 2) : ('A', 'B'),(3, 4) : ('C', 'B') }
Теперь сначала мне нужно проверить, если ключи (1, 2)
уже существует в словаре.
Что-то вроде:
if d.has_key(1,2)
print d[1]
print d[2]
3 ответа
Решение
Вы можете просто использовать буквальный кортеж в качестве ключа:
>>> d = {(1, 2): ('A', 'B'), (3, 4): ('C', 'D')}
>>> (1, 2) in d
True
>>> d[(1, 2)]
('A', 'B')
>>> d[(1, 2)][0]
'A'
Проблема в том, что f(a, b)
трактуется как "вызов f с двумя аргументами", потому что паренсы и запятые используются как часть синтаксиса вызова функции, не оставляя ничего похожего на кортеж. использование f((a, b))
если вы должны передать буквальный кортеж в функцию.
Но с тех пор dict.has_key
устарела, просто используйте in
и это неудобство исчезает: (1, 2) in d
Просто используйте словарь, как в любое другое время...
potential_key = (1,2)
potential_val = d.get(potential_key)
if potential_val is not None:
# potential_val[0] = 'A'
# potential_val[1] = 'B'