x = {2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]}
,我需要基於價值 的第一個項目進行排序的字典,所以我的結果應該是
{2:[40,30],4:[30,2],3:[24,16],6:[19,8],5:[0,80]}
x = {2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]}
,我需要基於價值 的第一個項目進行排序的字典,所以我的結果應該是
{2:[40,30],4:[30,2],3:[24,16],6:[19,8],5:[0,80]}
只需將其傳遞到dict()
:
>>> dict([(2, [40, 30]), (4, [30, 2])])
{2: [40, 30], 4: [30, 2]}
字典不關心它們的值在什麼順序:
>>> {'one': 1, 'two': 2} == {'two': 2, 'one': 1}
True
如果你想維持秩序,您可以使用collections.OrderedDict
:
>>> from collections import OrderedDict
>>> OrderedDict([(2, [40, 30]), (4, [30, 2])])
OrderedDict([(2, [40, 30]), (4, [30, 2])])
但如果我有x = [(4,[30,2] ),(2,[40,30])]在調用字典(x)我會得到{2:[40,30],4:[30,2]}但我想這樣的方式應答的順序應該不會被改變,我應該得到{4:[30,2],2:[40,30]} – FryMan
@SagarR,我已經添加了一個使用'collections.OrderedDict'的例子,它關心元素的順序(不像'dict')。 – Chris
如果我有x = {2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]}我需要根據值中的第一項對字典進行排序,所以我的結果應該是{2:[40,30],4:[30,2],3:[24,16],6:[19,8 ],5:[0,80]} – FryMan
所有你需要的是使用dict
d = dict(x)
做到,因爲你list
已經在正確的格式是很容易轉換爲Dictionary
,也就是說,您已經有一個key-value
元組對作爲您的列表元素。
但如果我有x = [(4,[30,2]),(2,[40,30])]調用字典(x)我會得到{2:[40 ,30],4:[30,2]}但是我想要這樣一個順序不應該改變的答案,我應該得到{4:[30,2],2:[40,30]} – FryMan
@SagarR不幸的是,'Dictionary'沒有'Order'的概念。 '訂單'是'list'中的概念。字典以「Key-Value」對概念運行。您使用密鑰並獲得價值,這就是爲什麼它是無序的。另一個原因是這樣做是爲了在內部獲得一些性能優勢。您需要找到適合您使用的正確工具。如果您需要訂購,請使用'List',不要使用'Dict'。如果你需要鍵值對,使用'dict'。如果你同時需要,那麼你可以創建兩個東西 - 沿這條線 – Ian
這是可能的,如果我有x = {2:[40,30],3:[24,16],4:[30,2],5 :[0,80],6:[19,8]}我需要根據值中的第一項對字典進行排序,所以我的結果應該是{2:[40,30],4:[30,2] ,3:[24,16],6:[19,8],5:[0,80]} – FryMan
你沒有明確的問你的問題,而是從你對其他答案的評論中想要以字典形式保存列表的順序。標準字典本質上是無序的,但是,你可以使用OrderedDict
代替:
from collections import OrderedDict
x = [(4, [30, 2]), (2, [40, 30])]
d = dict(x)
print(d)
# {2: [40, 30], 4: [30, 2]}
d = OrderedDict(x)
print(d)
# OrderedDict([(4, [30, 2]), (2, [40, 30])])
這將保留除了字典的順序按鍵。
[Python:List to Dictionary]的可能重複(http://stackoverflow.com/questions/4576115/python-list-to-dictionary) – konkked