python - 在Python中操作具有相同计数的元素的顺序

标签 python python-3.x zip

我有 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/

相关文章:

r - 如何下载和/或提取 R 中响应对象内的 'raw' 二进制 zip 对象中存储的数据?

zip - 从 ftp url 导入 zip 文件中的文本 CSV 文件会导致绑定(bind)错误 (BoundsError)

python - Odo 一个 CSV 文件到 PostgreSQL 数据库

python - PyInstaller 和 Python3.6 - 元组索引

python - 统一码编码错误 : 'latin-1' codec can't encode character '\u2013' in position 637: ordinal not in range(256)

python - 检查参数和返回类型

.net - 如何使用System.IO.Compression读取/写入ZIP文件?

python - sys.stdin.read() 在 python 中到底返回什么?

python - 向多项式朴素贝叶斯分类器添加特征 - Python

python - Pandas Groupby 唯一多列