簡體   English   中英

Python將元組變成字典

[英]Python turning a tuple into a dict

我已經搜索過,但找不到任何有效的方法……我希望有人可以幫助我。

我正在嘗試獲取一個元組並將其更改為有序的字典:

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}

PS。 如果您認為自己知道有什么可以幫助我的,請回答。

您可以先對列表進行排序。 這將基於每個項目的(x, y)值重新排列列表。 具有相同x值的項目將按其y值排序。

然后,您可以將其轉換為OrderedDict ,並毫不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)])

這也有效。

In [1]: a = [(5, 3), (1, 4), (1, 7), (12, 7), (8, 3), (12, 4), (12, 5)]

In [2]: dict(sorted(a, key=lambda x: (x[0], x[1])))
Out[2]: {1: 7, 5: 3, 8: 3, 12: 7}

試試這個

>>> 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}
>>>

請注意,如果在元組中重復了一個鍵,則前一個將被替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM