我试图对以下列表进行排序:
L = ['Z3', 'X3','V3','M0' ..., 'F2']
根据这些规则,我在以下两个词典中进行了定义:
dicMonths = {'F':1,'G':2,'H':3,'J':4,'K':5,'M':6,'N':7,'Q':8,'U':9,'V':10,'X':11,'Z':12}
dicYears = {'2':2022, '1':2021, '0':2020, '9':2019, '8':2018, '7':2017, '6':2016, '5':2015, '4':2014, '3':2013}
我应用了以下代码,但不起作用:
aa = [(elt[0], elt[1]) for elt in L]
sorted(aa, key= lambda x,y : (dicMonths[x], dicYears[y]))
它给了我以下错误:
TypeError: () missing 1 required positional argument: 'y'
我想让它给我一个分类列表,如下所示:
['F3', 'G3', 'H3', 'J3', 'K3', 'M3', 'N3', 'Q3', 'U3', 'V3', 'X3', 'Z3', 'F4', ...]
我如何解决这个问题
@flakes的建议非常优雅,但可能不会产生所需的输出,因为它让月份优先于年份。 但是,根据问题中提到的预期产出,年份应优先于月份,例如“Z3”<;'F4'
这可以通过轻微的调整来实现:
您为
key
参数提供了一个不兼容的函数key
接受接受一个参数并返回另一个参数的函数。如果希望这样做,则需要将tuple参数作为单个值进行访问此外,您不需要将
L
作为单独的步骤进行拆分。试试这个:相关问题 更多 >
编程相关推荐