Python:Python:在字典中排序值?

Python:Python:在字典中排序值?,python,list,dictionary,set,Python,List,Dictionary,Set,我有 我需要根据值中的第一项对字典进行排序 所以我的结果应该是 x = {2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]} 只需将其传递到: 字典不关心其值的顺序: >>> dict([(2, [40, 30]), (4, [30, 2])]) {2: [40, 30], 4: [30, 2]} 如果要维护订单,可以使用: 只需将其传递到: 字典不关心其值的顺序: >>> dict([(2, [40, 30])

我有

我需要根据值中的第一项对字典进行排序 所以我的结果应该是

x = {2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]}
只需将其传递到:

字典不关心其值的顺序:

>>> dict([(2, [40, 30]), (4, [30, 2])])
{2: [40, 30], 4: [30, 2]}
如果要维护订单,可以使用:

只需将其传递到:

字典不关心其值的顺序:

>>> dict([(2, [40, 30]), (4, [30, 2])])
{2: [40, 30], 4: [30, 2]}
如果要维护订单,可以使用:


你所需要做的就是使用dict


由于列表的格式已经正确,可以轻松转换为字典,也就是说,您已经有了一个键值元组对作为列表元素。

您需要做的就是使用dict


因为您的列表已经采用了正确的格式,可以轻松转换为字典,也就是说,您已经有了一个键值元组对作为列表元素。

您的问题并不明确,但从您对其他答案的评论来看,您希望保留字典形式的列表顺序。标准词典本质上是无序的,但是,您可以使用:


这将按添加到词典中的顺序保留键。

您的问题没有明确说明,但根据您对其他答案的评论,您希望保留词典形式列表的顺序。标准词典本质上是无序的,但是,您可以使用:


这会按照添加到字典中的顺序保留键。

但是如果我调用dictx时有x=[4[30,2],2[40,30]],我会得到{2:[40,30],4:[30,2]}但是我希望答案的顺序不应该改变,我应该得到{4:[30,2],2:[40,30]}@SagarR,我已经添加了一个使用collections.OrderedDict的示例,如果我有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]}@SagarR,你一直在改变规则。首先,你问如何创建dict,两个人向你展示了。然后你把你的问题改成了如何维持秩序,我更新了我的答案,你也得到了一个关于有序信息通信的新答案。现在,您询问如何根据存储的值更改顺序。请确保你知道你真正想要什么,并在你的问题中包括这些细节。由于我正确地回答了你的两个问题,所以我保留我的答案。首先我有x={2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]}然后我打电话给sortedx.items,key=operator.itemgetter1,reverse=True,它给了我[2[40,30],4[30,2],3[24,16],6[19,8],5[0,80]],所以我问了一个问题以同样的顺序转换成dict…但是如果我有x=[4[30,2],2,[40,30]]调用dictx时,我会得到{2:[40,30],4:[30,2]}但我希望答案的顺序不应改变,我应该得到{4:[30,2],2:[40,30]}@SagarR,我已经添加了一个使用collections.OrderedDict的示例,它与dict不同,它关心元素的顺序。如果我有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]}@SagarR,你一直在更改规则。首先,你问如何创建dict,两个人向你演示。然后,你将问题改为询问如何维护订单,我更新了我的答案,你也得到了一个关于OrderedDict的新答案。现在,你问如何根据存储的值更改订单。请确保你知道至少,你确实想要并在你的问题中包含这些细节。我保留我的答案,因为我已经正确地回答了你的两个问题。请随意用你的新规则问一个新问题。首先我有x={2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]}然后我调用sortedx.items,key=operator.itemgetter1,reverse=True它给了我[2,[40,30],4,[30,2],3,[24,16],6,[19,8],5,[0,80]]所以我问了一个问题,以同样的顺序转换成dict…但是如果我有x=[4,[30,2],2,[40,30]]调用dictx,我会得到{2:[40,30],4:[30,2]}但我希望答案的顺序不应该改变,我应该得到{4:[30,2],2:[40,30]}@SagarR遗憾的是,Dictionary没有顺序的概念。顺序是列表中的概念。Dictionary使用键-值对概念运行。您使用键并获得值,这就是它无序的原因。另一个原因是这样做是为了在内部获得一些性能优势。您需要找到适合您使用的工具。如果您需要它要排序,请使用List,不要使用Dict。如果您需要键值对,请使用Dict。如果您同时需要这两个键值对,那么您可以创建它们-如果我有x={2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]}并且我需要根据va中的第一项对字典进行排序,这是可能的吗
lue所以我的结果应该是{2:[40,30],4:[30,2],3:[24,16],6:[19,8],5:[0,80]}@SagarR为了保持有序,你不能使用字典。您可能希望看起来是int。@SagarR您是指列表、dict和OrderedDict吗?太好了找到你合适的工具,这是关键…但是如果我在调用dictx时有x=[4[30,2],2[40,30]],我会得到{2:[40,30],4:[30,2]}但我希望答案是顺序不应该改变,我应该得到{4:[30,2],2:[40,30]}@SagarR不幸的是,字典并没有顺序的概念。顺序是列表中的概念。字典使用键值对概念运行。您使用key并获得值,这就是它无序的原因。另一个原因是这样做是为了在内部获得一些性能优势。你需要找到适合你使用的工具。如果您需要对它进行排序,请使用List,不要使用Dict。如果您需要键值对,请使用Dict。如果您同时需要这两个键值,那么您可以创建它们-如果我有x={2:[40,30],3:[24,16],4:[30,2],5:[0,80],6:[19,8]},那么这是可能的,如果我有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]}@SagarR为了保持它的有序,你不能使用字典。您可能希望看起来是int。@SagarR您是指列表、dict和OrderedDict吗?太好了找到合适的工具,这是关键…可能的重复可能的重复
>>> {'one': 1, 'two': 2} == {'two': 2, 'one': 1}
True
>>> from collections import OrderedDict
>>> OrderedDict([(2, [40, 30]), (4, [30, 2])])
OrderedDict([(2, [40, 30]), (4, [30, 2])])
d = dict(x)
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])])