Python中字符串列表的排序列表[重复]

Posted

技术标签:

【中文标题】Python中字符串列表的排序列表[重复]【英文标题】:Sort list of lists of strings in Python [duplicate] 【发布时间】:2014-10-04 12:52:07 【问题描述】:

如何根据第一个元素对以下内容进行排序?

list1 = [["Value313",1],["Value421",3],["Value234",2]]

最终,我应该得到以下信息:

list1 = [["Value234",2],["Value313",1],["Value421",3]]

【问题讨论】:

list1.sort() 将在第一个元素上默认排序 list1(原位) 【参考方案1】:

列表的默认排序顺序(按字典顺序)已经是你想要的了。

>>> list1 = [["Value313",1],["Value421",3],["Value234",2]]
>>> list1.sort()
>>> print list1
[['Value234', 2], ['Value313', 1], ['Value421', 3]]

【讨论】:

【参考方案2】:
sorted(list1,key=lambda x : x[0])

[['Value234', 2], ['Value313', 1], ['Value421', 3]]

使用 sorted 并使用键 lambda x[0] 其中x[0] 是每个子列表中的第一个元素

或就地排序以避免创建新列表:

list1 = [["Value313",1],["Value421",3],["Value234",2]]

list.sort(list1,key=lambda x : x[0])
print list1
[['Value234', 2], ['Value313', 1], ['Value421', 3]]

【讨论】:

反对票的具体原因是什么?【参考方案3】:

要对list1 进行就地排序(不创建另一个列表),请使用:

from operator import itemgetter
list1.sort(key=itemgetter(0))

如果你想创建另一个列表并留下list1 unsorted 使用:

from operator import itemgetter
list2 = sorted(list1, key=itemgetter(0))

您可以使用 lambda,但 operator.itemgetter 通常具有更好的性能,因为它处于 C 级别。

【讨论】:

我确实做到了,对于整数对列表并使用sorted,我(旧)机器上的itemgetter 解决方案每个循环207 µslambda 每个循环 359 µs

以上是关于Python中字符串列表的排序列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python:当它是数字列表时对字符串列表进行排序[重复]

在Python中对字符串列表进行排序[重复]

python:按子列表中的项目对列表列表进行排序[重复]

python中坐标的排序列表[重复]

如何从 Python 列表中删除重复项并保持顺序? [复制]

Python:按“列”对列表进行排序[重复]