2013-05-25 3 views
1

Привет У меня есть этот код ...Формат перестановки словаря питона

x = {'stack': ['2', '3'], 'overflow': ['1', '2']} 
for i in x.values(): 
    heroes = {x[0]:x[1:] for x in permutations(i)} 
    print heroes 

Это дает мне ...

{'3': ('2',), '2': ('3',)} 
{'1': ('2',), '2': ('1',)} 

Позже в моей программе мне нужно значения ключи должны быть в форме списка, а не в форме кортежа. Так что результат мне нужно это ...

{'3': ['2'], '2': ['3']} 
{'1': ['2'], '2': ['1']} 

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

ответ

3
heroes = {x[0]:list(x[1:]) for x in permutations(i)} 
+0

Спасибо, много работает как шарм. Один вопрос, будет ли это кастинг сказываться на моей программе, если у меня есть словари с ключами 100000 +? – Ogen

+2

@ Клей, конечно, этот дополнительный шаг занимает дополнительное время, но если вам нужны списки, вы не можете этого избежать. Невозможно сказать, сколько «платных» у вас есть в вашей программе, не видя остальных –

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