我有一个元组列表(“twoples”)
[('aaa',2), ('BBB',7), ('ccc',0)]
我需要按这个顺序打印,但是
^{pr2}$给予
[('BBB', 7), ('aaa', 2), ('ccc', 0)]
list.sort(key=str.tolower)
不起作用(显然),因为
AttributeError: type object 'str' has no attribute 'tolower'
我不想更改列表中的字符串。在
另一个回答
list.sort(key=lambda (a, b): (a.lower(), b))
但那一定是python2的东西,因为
SyntaxError: invalid syntax
。。。一开始(
itemgetter()没有帮助,因为只允许一个“key”
以下内容在Python 3中起作用:
函数参数解包在Python3中不起作用(正如您所发现的),但是从问题的措辞来看,您似乎只关心每个元组的第一个元素(
elem[0]
)的比较。本例集中于此,并忽略第二个元素(elem[1]
)。在您是对的,这是一个Python 2的东西,但修复非常简单:
这看起来并不那么清楚,因为名称}没有比}更多的内在含义。(如果他们是}或其他什么,那可能是另一个故事…)
a
和{a[0]
和{name
和{Python2允许您将函数参数解压为元组。这种方法在一些简单的情况下有效(有时也很方便),但也有很多问题。请参见PEP 3113了解它被删除的原因。在
处理此问题的标准方法是在函数内部拆分值,这在
^{pr2}$lambda
中不太有效。但是,有什么原因不能把函数定义得越界呢?在作为一个补充说明,你真的不应该调用你的list
list
;它隐藏了list
类型,所以你不能再使用它了(例如,如果你想通过写list(tup)
将元组转换为列表,那么你将尝试调用你的列表,并得到一个令人困惑的错误)。在相关问题 更多 >
编程相关推荐