Python在同一个字典中上下排序

团队,

如何在下对字典进行排序。

  

sorted(dictionary.keys(),reverse=True)在下面生成“ FROM”结果:   而我正在寻找类似“ TO:”的结果。

NOW  (sort down)            goaL: 
{
'5.000': 'Y2A7','5.000': 'Y2A7','4.000': 'Y2A5','3.000': 'Y2A3','2.002': 'Y2A6',<< .002    '2.000': 'Y2A2','2.001': 'Y2A4',<< .001    '2.001': 'Y2A4',<< .001
'2.000': 'Y2A2',<< .002
'1.000': 'Y2A1'             '1.000': 'Y2A1' 
}

可以将其视为具有从新到旧排序的答复的邮件。 线程化的消息应以旧->新的顺序显示,如下所示:

NOW:                goaL: 
msg 5               msg 5
msg 4               msg 4
msg 3               msg 3
    msg 2.002       msg 2
    msg 2.001           msg 2.001
msg 2                   msg 2.002
msg 1               msg 1

如果邮件回复“ msg 2”将被排序为新->旧

有什么想法可以做到吗?

wei988168 回答:Python在同一个字典中上下排序

学习创建返回元组的排序键(请参见Sort a dictionary with custom sorting function):

d = {
'5.000': 'Y2A7','4.000': 'Y2A5','3.000': 'Y2A3','2.002': 'Y2A6','2.001': 'Y2A4','2.000': 'Y2A2','1.000': 'Y2A1'
}

result = sorted(d,key = lambda x : (-int(float(x)),float(x)))

print(result)

密钥现在已正确排序:

['5.000','4.000','3.000','2.000','2.001','2.002','1.000']

(-int(float(x)),float(x))产生与键的整数值相反的值(作为浮点数),作为第一个元组元素,并且作为平局决胜者,仅产生浮点值。因此,当整数值相同时,平局决胜者会在本地反转排序。

现在使用已排序的键进行迭代以获取已排序的字典数据,或直接对d.items()进行排序:

sorted(d.items(),key = lambda x : (-int(float(x[0])),float(x[0])))
本文链接:https://www.f2er.com/3142714.html

大家都在问