d = {'A': ['A11117',
'33465'
'17160144',
'A11-33465',
'3040',
'A11-33465 W1',
'nor'], 'B': ['maD', 'vern', 'first', 'A2lRights']}
我有一个字典d
,我想根据字符的长度对值进行排序。例如,对于键A
,值A11-33465 W1
将是第一个,因为它包含12个字符,其次是'A11-33465'
,因为它包含9个字符,等等。我想要此输出:
d = {'A': ['A11-33465 W1',
' A11-33465',
'17160144',
'A11117',
'33465',
'3040',
'nor'],
'B': ['A2lRights',
'first',
'vern',
'maD']}
(我知道字典无法排序,但下面的示例对我来说不起作用,但答案包含已排序的字典)
我尝试了以下
python sorting dictionary by length of values
print(' '.join(sorted(d, key=lambda k: len(d[k]), reverse=True)))
Sort a dictionary by length of the value
sorted_items = sorted(d.items(), key = lambda item : len(item[1]))
newd = dict(sorted_items[-2:])
How do I sort a dictionary by value?
import operator
sorted_x = sorted(d.items(), key=operator.itemgetter(1))
但是他们俩都没有给我我想要的东西。
如何获得所需的输出?
答案 0 :(得分:3)
您不对dict
进行排序,是对其中的列表进行排序。最简单的将是对列表进行原位排序的循环:
for k, lst in d.items():
lst.sort(key=len, reverse=True)
这会将d
变成:
{'A': ['3346517160144', 'A11-33465 W1', 'A11-33465', 'A11117', '3040', 'nor'],
'B': ['A2lRights', 'first', 'vern', 'maD']}
如果要保持原始数据完整,请使用以下理解:
sorted_d = {k: sorted(lst, key=len, reverse=True) for k, lst in d.items()}