【发布时间】:2021-11-22 00:36:53
【问题描述】:
因为我用附加列表创建了我的dict 文件。我有以下 dict 文件:
dict_1 = {'a':["1","2","d","d","d","1","2","2"],
'b':["1","2","e","e","5","5","5","6"]}
如何在list 中按frequency 对值进行排序,以便得到如下输出:
dict_1 = {'a':["d","d","d","2","2","2","1","1"],
'b':["5","5","5","e","e","6","2","1"]}
相同频率的字符串顺序无关
我试过了
result=[]
for k,v in dict_1.items():
result.append(sorted(v, key = v.count,
reverse = True))
得到了
[['2', 'd', 'd', 'd', '2', '2', '1', '1'],
['5', '5', '5', 'e', 'e', '1', '2', '6']]
第一个列表中的“2”有问题。
谢谢。
【问题讨论】:
-
这能回答你的问题吗? Sort list by frequency
-
它发生的原因是因为例如
'2'和'd'在第一个列表中出现的次数相同 (3),因此在对该列表进行排序时,没有理由将个人'2'和'd'按任何特定顺序排列 - 因此它们彼此不分开。寻求此问题帮助的诀窍是要了解您不仅要尝试排序,还要对值进行分区 - 将类似的值组合在一起,按频率对组进行排序,并发出相应的输出。 -
顺便说一句,请阅读*.com/help/minimal-reproducible-example。显然,这里的困难是not“我如何将这种自定义排序应用于字典中的每个值?”,因此您应该不包括问问题时的那部分代码。相反,请专门询问如何对单个列表进行排序。显然,一旦你知道如何做到这一点,你就可以解决整个问题。
标签: python