在Python中操纵具有相同计数的元素的顺序

时间:2018-08-14 07:58:19

标签: python python-3.x zip

我有2个名为'speciality'和'count'的列表,它们是字典'P'的一部分。我用邮编按“计数”列表的降序对两个“列表”进行了排序。

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)}

请注意,元素“眼科”和“耳鼻喉”具有相同的计数9。

但是,在执行Zip Sort之后。 在输出元组中,“眼科”出现在“ ENT”之前。在“输入”中,顺序为“ ENT”,然后是“眼科”。

我们可以像下面这样输出吗?

P = {'Speciliaty': ('ENT', 'Opthalmology', 'Nephrology', 'Cardiology', 'Oncology'), 'Count': (9, 9, 7, 2, 1)}

1 个答案:

答案 0 :(得分:1)

您需要将key中的sorted设置为按计数排序。

例如:

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')}