我对python很陌生,我很抱歉这已经得到了回答。我可以看到很多以前对“排序”问题的答案,但我的问题似乎与这些问题和答案有点不同。
我有一个键列表,每个键都包含在一个元组中,我正在尝试对其进行排序。每个键都派生自 CSV 文件中的列的子集,但该子集由用户在运行时确定,不能硬编码,因为它会因执行而异。我还有一个日期时间值,它将始终作为元组中的最后一项构成键的一部分(因此至少有一个要排序的项目 - 即使用户没有提供其他项目)。
要排序的元组如下所示:
(col0, col1, .... colN, datetime)
其中 col0 到 colN 是基于在 CSV 文件中的列中找到的值,并且“N”可以从运行到运行更改。
在每次执行中,列表中的元组将始终在每个元组中具有相同数量的项目。但是,它们需要能够根据用户输入在每次运行中有所不同。
排序看起来像:
sorted(concurrencydict.keys(), key=itemgetter(0, 1, 2))
...当我根据前三列对排序进行硬编码时。问题是我在执行之前不知道需要对 3 个项目进行排序 - 它可能是 1、2、3 或更多。
我希望这个描述是有道理的。
我一直无法想到如何让 itemgetter 接受可变数量的值。
有谁知道是否有一种优雅的方式来执行基于 python 中可变数量的项目的排序,其中排序项目的数量是在运行时确定的(而不是基于固定的列号或属性名称)?