我对python很新,我的歉意是这已经被回答。我可以看到很多以前对“排序”问题的答案,但是我的问题似乎与这些问题和答案有点不同。排序基于可变数量的排序键输入后执行
我有一列键,包含在一个元组中的每个键,我正在尝试排序。每个密钥都是从CSV文件中的列的子集派生的,但是这个子集在运行时由用户确定,并且不能进行硬编码,因为它会因执行而异。我还有一个日期时间值,它总是作为元组中最后一个元素的一部分形成的(所以至少有一个元素可以排序 - 即使用户没有提供额外的元素)。
的元组进行排序的样子:
(col0, col1, .... colN, datetime)
凡COL0到科隆是基于“N”在一个CSV文件列中的值,并且可以从运行之间改变。
在每个执行过程中,列表中的元组在每个元组中始终具有相同数量的项目。但是,它们需要能够根据用户输入而在运行之间变化。
的排序是这样的:
sorted(concurrencydict.keys(), key=itemgetter(0, 1, 2))
...当我做硬编码排序基于前三列。问题是我不知道在执行之前需要对3件物品进行分类 - 可能是1,2,3或更多。
我希望这个描述有意义。
我还没有想到如何让itemgetter接受可变数量的值。
有没有人知道是否有一个优雅的方式来执行基于python项目的可变数量的排序项目的数量确定在运行时(而不是基于固定的列号或属性名称)?
'键= itemgetter(* sort_columns)'? – Blckknght
太容易了 - 我对Python的新鲜感恐怕 –