KKc*_*KKc 0 python sorting python-3.x
我想获得一个带有两个约束的字典的反转顺序.首先,我根据值排序:
>>> d = {'I C': (2, 4), 'B I C': (2, 6), 'B I': (2, 6)}
>>> sortd = sorted(d.items(), key=lambda v: v[1], reverse=True) (1)
>>> sortd
[('B I', (2, 6)), ('B I C', (2, 6)), ('I C', (2, 4))]
Run Code Online (Sandbox Code Playgroud)
其次,对于具有相同值的项,我想获得之前具有最长键的项.在我之前的例子中,我想要这样的结果:
[('B I C', (2, 6)), ('B I', (2, 6)), ('I C', (2, 4))]
Run Code Online (Sandbox Code Playgroud)
是否可以直接在我的sorted()命令(1)中进行?
在sort函数中包含键的长度:
sorted(d.items(), key=lambda v: (v[1], len(v[0])), reverse=True)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> sorted(d.items(), key=lambda v: (v[1], len(v[0])), reverse=True)
[('B I C', (2, 6)), ('B I', (2, 6)), ('I C', (2, 4))]
Run Code Online (Sandbox Code Playgroud)
所以每个项目都按元组排序(value, len(key)); 较长的长度在较长的长度后反向排序,但仅当元组的第一个元素相同时.
| 归档时间: |
|
| 查看次数: |
372 次 |
| 最近记录: |