Python将元组转换为字典

时间:2016-02-22 07:17:01

标签: python dictionary tuples

我已经搜索了但我找不到任何可行的东西......我希望有人可以帮助我。

我正在尝试获取一个元组并将其更改为有序的字典:

mylist = [(5, 3), (1, 4), (1, 7), (12, 7), (8, 3), (12, 4), (12, 5)]

并将其更改为:

myorderedlist = [(1, 7), (1, 4), (5, 3), (8, 3), (12, 7), (12, 5), (12, 4)]

然后(我需要它来摆脱较小的值):

mydic = {1:7, 5:3, 8:3, 12:7}

总的来说,我想把mylist = [(5, 3), (1, 4), (1, 7), (12, 7), (8, 3), (12, 4), (12, 5)]变成mydic = {1:7, 5:3, 8:3, 12:7}

聚苯乙烯。如果你认为你知道一些可以帮助我的事情,请把它作为答案。

3 个答案:

答案 0 :(得分:3)

您可以先排序列表。这将根据每个项目的(x, y)值重新排列列表。具有相同x值的项目将按其y值进行排序。

然后您可以将其转换为OrderedDict并保持排序顺序而不会感到痛苦。

from collections import OrderedDict

mylist = [(5, 3), (1, 4), (1, 7), (12, 7), (8, 3), (12, 4), (12, 5)]
mylist.sort()
print mylist

mydict = OrderedDict()
mydict.update(mylist)
print mydict

输出:

[(1, 4), (1, 7), (5, 3), (8, 3), (12, 4), (12, 5), (12, 7)]
OrderedDict([(1, 7), (5, 3), (8, 3), (12, 7)])

答案 1 :(得分:0)

这也有效。

DateTime.Now.ToString("yyyy-MM-dd")

答案 2 :(得分:0)

尝试这样的事情

>>> mylist = [(5, 3), (1, 4), (1, 7), (12, 7), (8, 3), (12, 4), (12, 5)]
>>> smaller = 2 # for example
>>> mydic = {k:v for k,v in mylist if v > smaller}
>>> mydic
{8: 3, 1: 7, 12: 5, 5: 3}
>>>

请注意,如果在元组中重复某个键,则会替换前一个键。