2015-07-06 7 views
2

Я взял ключи из словаря. В настоящее время, я сумел получить их в список как это сделать:Работа с кортежами и словарями

dict = {(3,13):'gas', (11,4):'gas', (0,1):'food', (1,5):'food'} 

list = [] 

for i in dict: 
    if dict.get(i,0) == 'gas': 
     list.append(i) 

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

Так, например, если (3,1) является первым значением, с которым я работаю из своего списка, я хочу, чтобы каждый из них мог принимать каждое значение. Я бы получил 3 в мою формулу как x, а 1 перешел в мою формулу как y.

Единственный модуль, который я могу импортировать, - math, поэтому я могу использовать sqrt.

+0

ваш список может быть построен с помощью клавиши [[ключ для ключа, значение в словаре.items(), если значение == 'gas'] '. Не уверен, что вы просите, однако. –

+0

В чем вопрос? –

+0

Я ищу способ войти в кортежи, поэтому я могу использовать каждую пару x и y в формуле. – ChrisAngj

ответ

3

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

for i in dict: 
    # i is now equal to (3, 13), or (11, 4) etc 
    x, y = i 

На самом деле вы можете сделать это в одном шаге:

for x, y in dict: 
    # etc. 

Однако для этой манипуляции , так как похоже, что вы хотите все ключи и значения, я бы использовал dict.items(), который возвращает пары ключ/значения:

for key, value in dict.items(): 
    # You don't need to do dict.get anymore, you already have it: 
    if value == 'gas': 
     list.append(key) 

Но вы также хотите, чтобы объединить, что с кортежем распаковка для ключей, так что вы в конечном итоге с:

for (x, y), value in dict.items() 

Еще одно замечание: не называйте переменную list или dict - эти внутренние команды который будет затенен

0

Распакуйте сопряженный кортеж на отдельные компоненты во время итерации. Затем передать их в качестве аргументов:

for x, y in dic.keys(): 
    formula(x, y) 
+3

Вы можете просто перебирать словарь самостоятельно, здесь не нужно вызывать' .keys() '. 'для x, y в dic:'. –

+1

@MartijnPieters Правда, только предпочтение, я думаю. –

+1

@MartijnPieters Но опять же, * явный лучше, чем неявный. * Я бы предпочел подумать, что я повторяю набор ключей из словаря, а не самого словаря. –

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