使用多个值对python字典排序

2024-04-27 05:03:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我编了一本这样的字典:

Dict={'h1':[('h2',3.5), ('h3',2.5), ('h4', 1.5)], 'h2':[('h1',2.4), ('h4', 5.3), ('h3',1.1)], 'h3':[('h4',4.2),('h2',7.3),('h1',2.1)], 'h4':[('h1',4.3),('h3',3.2),('h2',4.3)]}

我想按值对h1、h2、h3和h4中的值进行排序。你知道吗

示例:

'h1':[('h4', 1.5), ('h3',2.5), ('h2',3.5)] 

对h2,h3和h4也是如此。你知道吗


Tags: 示例字典排序h2h1dicth4h3
2条回答

“(…)按值对h1、h2、h3和h4中的值进行排序”的含义不明确,但从OP的示例输出来看,我认为他/她希望按元组中的第二个元素(floats)对字典中的每个列表进行排序。这本词典就是这么做的:

Dict={'h1':[('h2',3.5), ('h3',2.5), ('h4', 1.5)], 'h2':[('h1',2.4), ('h4', 5.3), ('h3',1.1)], 'h3':[('h4',4.2),('h2',7.3),('h1',2.1)], 'h4':[('h1',4.3),('h3',3.2),('h2',4.3)]}

{k:sorted(Dict[k], key=lambda x : x[1]) for k in Dict}

示例:

>>> Dict={'h1':[('h2',3.5), ('h3',2.5), ('h4', 1.5)], 'h2':[('h1',2.4), ('h4', 5.3), ('h3',1.1)], 'h3':[('h4',4.2),('h2',7.3),('h1',2.1)], 'h4':[('h1',4.3),('h3',3.2),('h2',4.3)]}
>>> 
>>> Dict_sorted = {k:sorted(Dict[k], key=lambda x : x[1]) for k in Dict}
>>> 
>>> for elem in sorted(Dict_sorted):
...     print elem, Dict_sorted[elem]
... 
h1 [('h4', 1.5), ('h3', 2.5), ('h2', 3.5)]
h2 [('h3', 1.1), ('h1', 2.4), ('h4', 5.3)]
h3 [('h1', 2.1), ('h4', 4.2), ('h2', 7.3)]
h4 [('h3', 3.2), ('h1', 4.3), ('h2', 4.3)]
>>> 

用于循环和itemgetter

from operator import itemgetter
for key, items in Dict.iteritems():
   Dict[key] = sorted(items, key=itemgetter(1))

相关问题 更多 >