Dav*_*ave 10 python sorting list python-3.3
我有一个包含非特定数量元素的列表,但嵌套列表的每个第一个元素都是一个标识符,我想使用该标识符按顺序对列表进行排序
list = [['D', 'F', 'E', 'D', 'F', 'D'],['A', 'F', 'E', 'C', 'F', 'E'],['C', 'E', 'E', 'F', 'E', 'E'],['B', 'F', 'E', 'D', 'F', 'F']]
Run Code Online (Sandbox Code Playgroud)
经过排序
list = [['A', 'F', 'E', 'C', 'F', 'E'],['B', 'F', 'E', 'D', 'F', 'F'],['C', 'E', 'E', 'F', 'E', 'E'],['D', 'F', 'E', 'D', 'F', 'D']]
Run Code Online (Sandbox Code Playgroud)
我正在使用python 3.3.3
Dan*_*Dan 22
Python会自动按第一个元素对列表列表进行排序.例如:
lol=[[1,2,3],[5,6,7],[0,9,9]]
sorted(lol)
[[0, 9, 9], [1, 2, 3], [5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)
πόδ*_*κύς 11
你想使用.sort()或sorted:
>>> t = [['D', 'F', 'E', 'D', 'F', 'D'], ['A', 'F', 'E', 'C', 'F', 'E'], ['C', 'E', 'E', 'F', 'E', 'E'], ['B', 'F', 'E', 'D', 'F', 'F']]
>>> t.sort(key=lambda x: x[0]) # changes the list in-place (and returns None)
>>> t
[['A', 'F', 'E', 'C', 'F', 'E'], ['B', 'F', 'E', 'D', 'F', 'F'], ['C', 'E', 'E', 'F', 'E', 'E'], ['D', 'F', 'E', 'D', 'F', 'D']]
Run Code Online (Sandbox Code Playgroud)
另请注意,您的列表需要在其元素之间使用逗号.结果sorted如下:
>>> sorted(t) # does not change the list but returns the sorted list
[['A', 'F', 'E', 'C', 'F', 'E'], ['B', 'F', 'E', 'D', 'F', 'F'], ['C', 'E', 'E', 'F', 'E', 'E'], ['D', 'F', 'E', 'D', 'F', 'D']]
Run Code Online (Sandbox Code Playgroud)
如您所见,后一个示例在没有任何键参数的情况下对列表进行排序.前一个例子也可以; 但是你提到只有第一个元素是唯一的标识符,所以没有办法说明在第一个元素之外对列表进行排序的次要标准.
本质上与其他相同,但使用 operator.itemgetter(),
from operator import itemgetter
first_item = itemgetter(0)
new_list = sorted(original_list, key = first_item)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39358 次 |
| 最近记录: |