2014-04-15 2 views
0

Я пытаюсь преобразовать словаремпреобразования словарь в 2 списках

clues={#:A,+:B,6:C} 

в

clues1=[#,+,6] 
clues2=[A,B,C] 

, когда я использую clues.values ​​это не позволяет мне итерацию через него и любой другой метод, который я использовал, дал сообщение об ошибке

+0

Что значит «это не позволяет мне перебирать его»? Какое сообщение об ошибке? Пожалуйста, будьте конкретны! – njzk2

+0

@ njzk2 Возможно, он пропустил скобки, глядя на вопрос (может быть?). –

ответ

4

Вы хотите установить keys в clues1 и values в clues2?

clues1 = list(clues.keys()) 
clues2 = list(clues.values()) 
+0

Вам не нужно помещать их в 'list' ...' keys() 'и' values ​​() 'уже возвращать списки. – logc

+0

В противном случае вы можете также назначить оба в одном выражении, например: 'clues1, clues2 = clues.keys(), clues.values ​​()' – logc

+0

Это не так. они могут быть '' и '' соответственно. проверено на '2.7.5' и' 3.3.2' – emeth

1

Если вы хотите списки быть в алфавитном порядке, но по-прежнему имеют indicies совпадают, вы можете сделать:

clues={'#':'A','+':'B','6':'C'} 

cluesKeys = list(clues.iterkeys()) 
cluesValues = list(clues.itervalues()) 
+0

@mskimm На самом деле это не так. Я просто запускал его с Python 2.7.6, плюс, даже если бы это произошло, OP имел 'python-3.x' как тег, поэтому это не имело бы значения в любом случае. – heinst

+0

@mskimm https://docs.python.org/2/library/stdtypes.html#dict.iterkeys – heinst

+0

Ой, извините. Я удалил свой комментарий. – emeth

1

Если вы явно хотите итерации над «ключи» словаря:

clues={'#':'A','+':'B','6':'C'} 
clues1=list() 
clues2=list() 

for keys, values in clues.items(): 
    clues1.append(keys) 
    clues2.append(values) 

print clues1 
print clues2 

['#', '+', '6'] 
['A', 'B', 'C'] 
Смежные вопросы