[英]Sort list of below dictionary in descending order
I have the below dictionary and i want sorted dictionary我有以下字典,我想要排序字典
dict1 = {'years': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}], 'working': [{'doc_1': 1}, {'doc_2': 1}, {'doc_3': 0}],
'experience': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}], 'I': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}],
'T': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}], 'associated': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}],
'different': [{'doc_1': 1}, {'doc_2': 1}, {'doc_3': 0}],
'organizations': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}],
'His': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 1}], 'work': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}],
'domain': [{'doc_1': 1}, {'doc_2': 1}, {'doc_3': 0}], 'area': [{'doc_1': 1}, {'doc_2': 0}, {'doc_3': 0}],
'financial': [{'doc_1': 1}, {'doc_2': 1}, {'doc_3': 0}], 'Project': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}],
'Manager': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}], 'He': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}],
'areas': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}], 'major': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}],
'patient': [{'doc_1': 0}, {'doc_2': 2}, {'doc_3': 0}], 'billing': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}],
'assessments': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}],
'radiation': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}],
'endoscopy': [{'doc_1': 0}, {'doc_2': 1}, {'doc_3': 0}],
'interest': [{'doc_1': 0}, {'doc_2': 0}, {'doc_3': 1}],
'data': [{'doc_1': 0}, {'doc_2': 0}, {'doc_3': 3}], 'science': [{'doc_1': 0}, {'doc_2': 0}, {'doc_3': 2}],
'favorite': [{'doc_1': 0}, {'doc_2': 0}, {'doc_3': 1}], 'book': [{'doc_1': 0}, {'doc_2': 0}, {'doc_3': 1}],
'big': [{'doc_1': 0}, {'doc_2': 0}, {'doc_3': 1}]}
I want to sort value wise ie The document has highest value print first then lower and don't print 0 value document.我想对价值进行排序,即文档首先打印价值最高的文件,然后打印价值较低的文件,并且不打印价值为 0 的文件。
Here a solution:这里有一个解决方案:
d = {}
for key,list_dict in dict1.items():
d[key] = sorted([k for k in list_dict if list(k.items())[0][1] >0], key=lambda x: list(x.items())[0][1], reverse=True)
d
Output: Output:
{'He': [{'doc_2': 1}],
'His': [{'doc_1': 1}, {'doc_3': 1}],
'I': [{'doc_1': 1}],
'Manager': [{'doc_2': 1}],
'Project': [{'doc_2': 1}],
'T': [{'doc_1': 1}],
'area': [{'doc_1': 1}],
'areas': [{'doc_2': 1}],
'assessments': [{'doc_2': 1}],
'associated': [{'doc_1': 1}],
'big': [{'doc_3': 1}],
'billing': [{'doc_2': 1}],
'book': [{'doc_3': 1}],
'data': [{'doc_3': 3}],
'different': [{'doc_1': 1}, {'doc_2': 1}],
'domain': [{'doc_1': 1}, {'doc_2': 1}],
'endoscopy': [{'doc_2': 1}],
'experience': [{'doc_1': 1}],
'favorite': [{'doc_3': 1}],
'financial': [{'doc_1': 1}, {'doc_2': 1}],
'interest': [{'doc_3': 1}],
'major': [{'doc_2': 1}],
'organizations': [{'doc_1': 1}],
'patient': [{'doc_2': 2}],
'radiation': [{'doc_2': 1}],
'science': [{'doc_3': 2}],
'work': [{'doc_1': 1}],
'working': [{'doc_1': 1}, {'doc_2': 1}],
'years': [{'doc_1': 1}]}
This should solve your problem:-这应该可以解决您的问题:-
res = {}
for key, value in dict1.items():
res[key] = [i for i in dict1[key] if 0 not in (i.values())]
res[key] = sorted(res[key], key=lambda x : x[list(x.keys())[0]], reverse=True)
print(res)
Output:- Output:-
{'years': [{'doc_1': 1}], 'working': [{'doc_1': 1}, {'doc_2': 1}],
'experience': [{'doc_1': 1}], 'I': [{'doc_1': 1}], 'T': [{'doc_1': 1}],
'associated': [{'doc_1': 1}], 'different': [{'doc_1': 1}, {'doc_2': 1}],
'organizations': [{'doc_1': 1}], 'His': [{'doc_1': 1}, {'doc_3': 1}],
'work': [{'doc_1': 1}], 'domain': [{'doc_1': 1}, {'doc_2': 1}],
'area': [{'doc_1': 1}], 'financial': [{'doc_1': 1}, {'doc_2': 1}],
'Project': [{'doc_2': 1}], 'Manager': [{'doc_2': 1}], 'He': [{'doc_2': 1}],
'areas': [{'doc_2': 1}], 'major': [{'doc_2': 1}], 'patient': [{'doc_2': 2}],
'billing': [{'doc_2': 1}], 'assessments': [{'doc_2': 1}], 'radiation': [{'doc_2': 1}],
'endoscopy': [{'doc_2': 1}], 'interest': [{'doc_3': 1}], 'data': [{'doc_3': 3}],
'science': [{'doc_3': 2}], 'favorite': [{'doc_3': 1}], 'book': [{'doc_3': 1}],
'big': [{'doc_3': 1}]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.