Python从3个列表的zip中创建一个字典

时间:2015-08-10 23:33:06

标签: python list dictionary zip

I have 3 list that i would like to put into a dictionary:

    list1=['a','b','c']
    list2=[1,2,3]
    list3=[0.5,0.3,0.1]

传统上我可以用list1,list2

创建这样的字典
my_dict = dict(zip(list1, list2))

#sort on list 2 descending
sorted_my_dict = sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)

我想打印一下:c:[3,0.1],b:[2,0.3],a:[1,0.5]

这不起作用:

my_dict=dict(list1,zip(list2, list3))

1 个答案:

答案 0 :(得分:4)

您需要再添加一个zip,因为dict构造函数接受tuple s的列表,但不接受两个list s:

my_dict_3 = dict(zip(list1, zip(list2, list3)))

另请注意,Python中的dict未排序,此代码sorted(my_dict.items(), key=operator.itemgetter(1), reverse=True)会返回tuple s的列表,而不是已排序 dict

要对my_dict_3进行排序,您可以使用以下代码:

sorted_my_dict_3_items = sorted(my_dict_3.items(), key=lambda item: item[1][0], reverse=True)
sorted_my_dict_3 = OrderedDict(sorted_items)