2013-04-02 2 views
0

Если у меня есть словарь с ключом как кортеж и значение как int .. то есть x = {('G', 'N', 'L', 'C'): 4}, как я могу сказать python, что первый элемент ключа равен значению .. так, 'G' = 4? Есть ли способ, которым я могу это сделать?Словари и кортежи

+1

1. Ваш вопрос не имеет смысла. Что вы имеете в виду G = 4? 2. Если вы используете python, включите тег python, и вы получите гораздо больше ответов. – Colleen

+0

Умм .. Я имею в виду, что значение применяется только к первому элементу ключа. –

ответ

2

Это звучит, как вы хотите, чтобы сформировать новую dict:

In [40]: x = {('G', 'N', 'L', 'C'): 4} 

In [41]: y = {key[0]:val for key,val in x.iteritems()} 

In [42]: y 
Out[42]: {'G': 4} 

Вот еще один способ, который использует меньше Python колокольчики-и-свистки. Прежде всего заметим, что вы можете цикл через (ключ, значение) пар в Словаре:

x = {('G', 'N', 'L', 'C'): 4} 
for key in x: 
    print(key) 
    print(x[key]) 

урожайности

('G', 'N', 'L', 'C') 
4 

Таким образом, можно определить новую Dict, который связывает 'G' с 4, как это:

x = {('G', 'N', 'L', 'C'): 4} 
y = {} 
for key in x: 
    y[key[0]] = x[key] 

print(y)  
# {'G': 4} 

выражение {key[0]:val for key,val in x.iteritems()} делает то же самое, что и для цикла выше. Это называется dict comprehension (поиск по странице немного для «понимания диктата»).

В выражении также используется iteritems method, который дает вам как ключ, так и значение на каждом проходе через цикл, а не только ключ.

+0

Есть ли способ объяснить это более простым способом? Я до сих пор так далеко не в своем классе. –

+0

О, ничего себе, теперь имеет больше смысла. Благодаря ! –

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