сравнение элементов списка с ключами словаря - PullRequest
1 голос
/ 19 июля 2010

Мне нужно проверить, присутствует ли определенный ключ в каком-то словаре. Я могу использовать has_key ?? Есть ли другой способ сравнить элементы списка с ключом словаря.

У меня есть список как ... [(3,4), (4,5) ..] Мне нужно проверить, есть ли (3,4) в словаре.

Ответы [ 3 ]

4 голосов
/ 19 июля 2010

Как-то так?

>>> d = { (1,3):"foo", (2,6):"bar" }
>>> print (1,3) in d
True
>>> print (1,4) in d
False
>>> L = [ (1,3), (1,4), (15) ]
>>> print [ x in d for x in L ]
[True, False, False]

Если вы хотите добавить отсутствующие записи, вам понадобится явный цикл

for x in L:
  if x not in d:
    d[x]="something"
1 голос
/ 19 июля 2010

«Правильный» способ - использовать оператор in, как и в других ответах. Это работает для всего итерируемого, и вы получаете некоторое увеличение скорости, когда вы можете искать вещи путем хеширования (например, для словарей и наборов). Есть также более старый способ, который работает только для словарей, это метод has_key. Я обычно не вижу это в эти дни, и это также медленнее (хотя и ненамного).

>>> timeit.timeit('f = {(1,2) : "Foo"}; f.has_key((1,2))')
0.27945899963378906
>>> timeit.timeit('f = {(1,2) : "Foo"}; (1,2) in f')
0.22165989875793457
0 голосов
/ 19 июля 2010

dictionary.keys() возвращает список ключей, которые вы затем можете использовать if (3,4) in d.keys()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...