python中具有列表的排序字典

2024-10-01 00:35:46 发布

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

我有一本python字典,下面是我的代码

d = {
 'r_18': {'text': u'INCOMET', 'center': [195.24393963813782, 521.3750743865967]},
'r_19': {'text': u'759R', 'center': [620.7350377559662, 1517.1044731140137]}
}

sorted_x = sorted(d.items(),key=lambda kv: kv[1], reverse=False)
sorted_dict = collections.OrderedDict(sorted_x)
print(sorted_dict)

我需要一个dict,它根据应该排序的列表的第一个和第二个值进行排序。也就是说,两个包含值的列表应该按如下顺序排列

文本值的顺序基于列表的第一个y然后是x的顺序值

The error i got is TypeError: '<' not supported between instances of 'dict' and 'dict'


Tags: lambdakey代码text列表字典排序顺序
1条回答
网友
1楼 · 发布于 2024-10-01 00:35:46

d.items()的每个元素都是一对(key, dict),因此如果您想使用列表进行排序,您需要在dict中访问和索引它。
例如,如果要按(y,x)排序,则代码将变为:

>>> sorted_x = sorted(d.items(),key=lambda kv: (kv[1]['center'][1],kv[1]['center'][0]) , reverse=False)
>>> sorted_dict = collections.OrderedDict(sorted_x)
OrderedDict([('r_18', {'text': 'INCOMET', 'center': [195.24393963813782, 521.3750743865967]}), ('r_19', {'text': '759R', 'center': [620.7350377559662, 1517.1044731140137]})])

相关问题 更多 >