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

2024-06-01 06:19:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表,分别是'speciality'和'count',它们是字典'p'的一部分。我将两个“列表”按“count”列表的降序排序

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

但是,在做了压缩排序之后。 在输出元组中,“眼科学”出现在“ENT”之前。在输入中,顺序是“ENT”,然后是“Opthalmology”

我们可以做出如下输出:

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

Tags: 列表字典排序countzipent降序cardiology
1条回答
网友
1楼 · 发布于 2024-06-01 06:19:52

您需要将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')}

相关问题 更多 >