我有 2 个名为 'speciality' 和 'count' 的列表,它们是字典 'P' 的一部分。我按“计数”列表的降序对两个“列表”进行了 Zip 排序。
speciality = ['Cardiology' , 'Nephrology', 'ENT', 'Opthalmology' 'Oncology']
count = [2, 7, 9, 9, 1]
count, speciality = zip(*[[x, y] for x, y in sorted(zip(count, speciality), reverse=True)])
P = {'Speciliaty': speciality, 'Count': count}
print(P)
# {'Speciliaty': ('Opthalmology', 'ENT', 'Nephrology', 'Cardiology', 'Oncology'), 'Count': (9, 9, 7, 2, 1)}
请注意,元素“Opthalmology”和“ENT”的计数相同为 9。
但是,在进行压缩排序之后。 在输出元组中,“Opthalmology”出现在“ENT”之前。在输入中,顺序首先是“ENT”,然后是“Opthalmology”。
我们可以制作如下输出:
P = {'Speciliaty': ('ENT', 'Opthalmology', 'Nephrology', 'Cardiology', 'Oncology'), 'Count': (9, 9, 7, 2, 1)}
最佳答案
您需要在sorted
中设置key
以按计数排序。
例如:
speciality = ['Cardiology' , 'Nephrology', 'ENT', 'Opthalmology', 'Oncology']
count = [2, 7, 9, 9, 1]
count, speciality = zip(*[[x, y] for x, y in sorted(zip(count, speciality), key=lambda x: x[0], reverse=True)])
P = {'Speciliaty': speciality, 'Count': count}
print(P)
输出:
{'Count': (9, 9, 7, 2, 1), 'Speciliaty': ('ENT', 'Opthalmology', 'Nephrology', 'Cardiology', 'Oncology')}
关于python - 在Python中操作具有相同计数的元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51836466/