2017-04-25 10 views
0

多くの回答がstackoverflowにもかかわらず、この問題を解決するには問題が解決しなかったので、私はこの質問を書いています。
私は2リスト、List1List2を持っています。私がdict(zip(List1,List2))になると、辞書内の要素の順序が乱されます。Python:辞書へのリスト

print s_key 
print value 
sorted_dict = {k: v for k,v in zip(s_key,value)} 
another_test = dict(zip(s_key,value)) 
print sorted_dict 
print another_test 
print zip(s_key,value)) 

ターミナル:

[2, 1, 3] 
[31, 12, 5] 
{1: 12, 2: 31, 3: 5} 
{1: 12, 2: 31, 3: 5} 
[(2, 31), (1, 12), (3, 5)] 

私は[(2, 31), (1, 12), (3, 5)]dict

に理解するか、私が間違ってやっていることは役立つだろう任意の助けに変換されるだろうという印象の下にありました!ありがとう!

+8

dictsは順不同です。特定の注文が必要な場合は、['OrderedDict'](https://docs.python.org/2/library/collections.html#collections.OrderedDict)を使用してください。 – khelwood

+0

このような辞書はソートできません。私はハッシュテーブルについて読むことをお勧めします – user3684792

答えて

5
a=[2, 1, 3] 
b=[31, 12, 5] 
from collections import OrderedDict 
print(OrderedDict(zip(a,b))) 
0

あなたは、あなたの辞書のソート済みキー/値を表示したい場合、あなたが持っているようにタプルのリストに変換して、必要な方の要素によって、それを並べ替えることができますあなたの場合には、辞書を並べ替えることはできません。ヘルプ

こと、または作成するためのSorting list based on values from another list?

[(1, 12), (2, 31), (3, 5)] 

shoutout:

l1,l2=[2, 1, 3],[31, 12, 5] 
print ([(one,two) for (one,two) in 
     sorted(zip(l1,l2),key=lambda pair: pair[0])]) 

プリント:それ以下のコードではタプルの最初の要素によってタプルと種類のリストを作成し、辞書のリストをキーでソートしてリストをソートし、リストをループして各キーを呼び出す

他の人が指摘しているように、