Python如何基于两个自定义字典规则排序列表并解决lambda参数报错
错误原因
sorted()的key参数要求传入的函数仅接收1个参数,对应待排序列表中的单个元素,你定义的lambda要求传入2个参数,不符合调用规则,因此触发参数缺失报错。- 你的排序逻辑需要先按年份升序排列,同年份下再按月份升序排列,key的返回值顺序需要对应这个优先级。
最简修改方案
无需额外拆分列表,直接对原列表L排序即可:
sorted_L = sorted(L, key=lambda x: (dicYears[x[1]], dicMonths[x[0]]))
若要保留你原有拆分列表的写法
修改为以下代码即可:
aa = [(elt[0], elt[1]) for elt in L] # 单个参数x对应aa里的每个(字母,数字)元组 sorted_aa = sorted(aa, key=lambda x: (dicYears[x[1]], dicMonths[x[0]])) # 如需转回原字符串格式,可追加下面这行 sorted_L = [''.join(item) for item in sorted_aa]
运行后得到的结果和你预期的示例完全一致。
内容的提问来源于stack exchange,提问作者Khadija
相关产品推荐
相关产品推荐

