Python:列表到字典

Python:列表到字典,python,list,dictionary,Python,List,Dictionary,尽管在stackoverflow上有很多答案,但我还是写了这个问题,因为解决方案对我的问题不起作用 我有两个列表,List1和List2。当Idict(zip(List1,List2))字典中元素的顺序被扰乱 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_te

尽管在
stackoverflow
上有很多答案,但我还是写了这个问题,因为解决方案对我的问题不起作用
我有两个列表,
List1
List2
。当I
dict(zip(List1,List2))
字典中元素的顺序被扰乱

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


任何有助于了解我做错了什么地方的帮助都会有所帮助!谢谢

您无法对字典进行排序,在您的情况下,如果您想显示字典的已排序键/值,可以将其转换为元组列表,并按您想要的元素进行排序。在下面的代码中,它创建一个元组列表,并按元组中的第一个元素进行排序:

a=[2, 1, 3]
b=[31, 12, 5]
from collections import OrderedDict
print(OrderedDict(zip(a,b)))
l1,l2=[2, 1, 3],[31, 12, 5]
print ([(one,two) for (one,two) in
        sorted(zip(l1,l2),key=lambda pair: pair[0])])
印刷品:

[(1, 12), (2, 31), (3, 5)]
大声呼救

或者创建一个字典键列表并对列表进行排序,然后在列表中循环并调用每个键


或者像其他人指出的那样使用有序dict

您无法对字典进行排序,在您的情况下,如果您想显示字典的已排序键/值,您可以将其转换为元组列表,并按您想要的元素进行排序。在下面的代码中,它创建一个元组列表,并按元组中的第一个元素进行排序:

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

[(1, 12), (2, 31), (3, 5)]
大声呼救

或者创建一个字典键列表并对列表进行排序,然后在列表中循环并调用每个键


或者像其他人指出的那样使用有序的dict

dict是无序的。如果你需要一个特定的顺序,使用。你不能像这样对字典排序。我建议阅读有关哈希表的内容,因为dicts是无序的。如果你需要一个特定的顺序,使用。你不能像这样对字典排序。我建议您阅读有关哈希表的内容