2013-10-11 4 views
0

Скажем, у меня есть словарь d = {'q1': 1, 'q2': 2}Проверьте переменную ключ присутствует в словаре Python

Как я могу проверить, в for цикле присутствуют ли в этом словаре набор ключей? Что-то вроде:

for i in range(0, 1): 
    if 'q'+i in d: 
     print 'Key exists!' 

Как я могу заменить 'q'+i часть так, что мой код действителен? В основном мне нужно знать, как я могу конкатенировать строку с целым числом, чтобы использовать ее как допустимое выражение Python для поиска.

+0

Не отвечает на ваш вопрос, но вы, как правило, нужен список вместо серийно названных переменных: как насчет 'd = {'q': [1,2]}'. – georg

+0

@ thg435 вход поступает из списка сгенерированных переключателей, и это формат их имен – linkyndy

+2

@AndreiHorak: все же вы можете преобразовать его в надлежащий формат перед обработкой - это значительно упростит вас. – georg

ответ

7

Вам нужно сделать i строку:

if 'q'+str(i) in d: 

В Python + можно только положить вместе две вещи одного и того же типа (например, две строки, два целых числа и т.д.). Вы не можете собрать 'q', который является строкой, и i, который является целым числом, полученным от range(0, 1).

На самом деле, это может быть сделано более эффективно, как так:

if 'q%i' % i in d: 

В отличие от первого решения, это один создает только один строку (другой из двух, а затем положить их вместе с +).

+0

'' q% d '% (i,) 'немного более эффективен, так как он создает только одну строку (тогда как concatentation требует сначала создания строки из 'i', а затем создания новой комбинированной строки). – chepner

2

Вы также можете сделать это так:

if 'q%d'%i in d: 
7

Как насчет:

if 'q{0}'.format(i) in d: 
+0

+1 - новый стиль форматирования строк предпочтительнее в новом коде. –

+0

Python3 только правильно? –

+2

@btoueg - Нет, этот метод работает в Python 2.x. слишком. Он означает «новый», поскольку в последнее время все начали использовать этот метод. – iCodez

2

более изящным для меня:

for key in ['q{}'.format(i) for i in xrange(0, 1)]: 
    if key in my_dict: 
     print "key exists!" 
Смежные вопросы