2011-04-10 2 views
2

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

d = {} 
d = { (1, 2) : ('A', 'B'),(3, 4) : ('C', 'B') } 

Теперь первый мне нужно проверить Если ключи (1, 2) уже существует в словаре.

Что-то вроде:

if d.has_key(1,2) 
    print d[1] 
    print d[2] 

ответ

4

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

>>> d = {(1, 2): ('A', 'B'), (3, 4): ('C', 'D')} 
>>> (1, 2) in d 
True 
>>> d[(1, 2)] 
('A', 'B') 
>>> d[(1, 2)][0] 
'A' 
0

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

potential_key = (1,2) 
potential_val = d.get(potential_key) 
if potential_val is not None: 
    # potential_val[0] = 'A' 
    # potential_val[1] = 'B' 
2

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^