按降序排列以下字典的列表
Sort list of below dictionary in descending order
我有下面的字典,我想要排序的字典
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}]}
我想对值进行明智的排序,即
文件中有最高价值的先打印后较低的,不打印0价值的文件。
这应该可以解决您的问题:-
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)
输出:-
{'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}]
}
这里有一个解决方案:
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
输出:
{'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}]}
我有下面的字典,我想要排序的字典
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}]}
我想对值进行明智的排序,即 文件中有最高价值的先打印后较低的,不打印0价值的文件。
这应该可以解决您的问题:-
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)
输出:-
{'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}]
}
这里有一个解决方案:
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
输出:
{'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}]}