Проверка значений кортежей в словаре - PullRequest
2 голосов
/ 10 апреля 2011

У меня есть словарь, кортеж которого является его ключом, а также кортеж как его значения.Мне нужен способ доступа к значениям словаря на основе его ключей.Например:

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 ]

5 голосов
/ 10 апреля 2011

Вы можете просто использовать буквальный кортеж в качестве ключа:

>>> d = {(1, 2): ('A', 'B'), (3, 4): ('C', 'D')}
>>> (1, 2) in d
True
>>> d[(1, 2)]
('A', 'B')
>>> d[(1, 2)][0]
'A'
2 голосов
/ 10 апреля 2011

Проблема в том, что f(a, b) обрабатывается как "вызов f с двумя аргументами", поскольку паренсы и запятые используются как часть синтаксиса вызова функции, и ничего не выглядит как кортеж. Используйте f((a, b)), если необходимо передать буквальный кортеж функции.

Но поскольку dict.has_key устарело, просто используйте in, и это неудобство исчезнет: (1, 2) in d

0 голосов
/ 10 апреля 2011

Просто используйте словарь как в любое другое время ...

potential_key = (1,2)
potential_val = d.get(potential_key)
if potential_val is not None:
    # potential_val[0] = 'A'
    # potential_val[1] = 'B'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...