2016-11-09 4 views
0

Это может быть очевидным, но я застрял, могу ли я использовать итератор/один лайнер для достижения следующего:Python итераторы/один лайнер для контура

TEAMS = [u'New Zealand', u'USA'] 
dict = {} 

Как я могу написать:

for team in TEAMS: 
    dict[team] = u'Rugby' 

в качестве итератора, например:

(dict[team] = u'Rugby' for team in TEAMS) # Or perhaps 
[dict[team] for team in TEAMS] = u'Rugby 

это может быть сделано, где делают круглые скобки должны быть размещены?

Требуемая мощность:

dict = {u'New Zealand': u'Rugby', u'USA': u'Rugby'} 

Я знаю, что есть много вопросов, связанных с итераторами в Python, так что я прошу прощения, если это есть ответ, я пытался смотреть и не мог найти хороший ответ на этот вопрос особый вопрос.

+2

Если значение является непреложным объект, то вы можете просто сделать: 'dict.fromkeys (КОМАНДЫ, u'Rugby ')'. –

ответ

3

Вы можете использовать определение dict. Посмотрите ниже:

TEAMS = [u'New Zealand', u'USA'] 
d = {team: 'Rugby' for team in TEAMS} 
+0

Почему я голосую? – pt12lol

+0

, вы можете переименовать переменную в не встроенный тип –

+0

. просто предоставил то же имя, что и автор. – pt12lol

0
TEAMS = [u'New Zealand', u'USA']  
dict(zip(TEAMS, ['Rugby'] * 2)) 
1

использовать метод Dict fromkeys. Кроме того, не рекомендуется использовать Dict ключевое слово в качестве имени вар, изменить на d вместо

TEAMS = [u'New Zealand', u'USA'] 
d = {}.fromkeys(TEAMS, u'Rugby') 
# d = {u'New Zealand': u'Rugby', u'USA': u'Rugby'} 
Смежные вопросы