2017-03-01 62 views
-5

这里排序列表是我的清单:通过ID

data_set = [['ID=j234hg\n'], ['Date=19 October 1969\n'], ['Title=Court Scene With Cardinal Richelieu\n'], ['ID=s4k5jk\n'], ['Date=8 December 1970\n'], ['Title=Crossing The Atlantic On A Tricycle\n'], ['ID=n4j6l3j\n'], ['Date=7 December 1972\n'], '[Title=Mr. Pither']] 

我想通过ID进行排序:这里 是我的代码:

for index,l in enumerate(data_set): 
    if 'ID=' == l[0][:1]: 
     data_set[index]="ID="+l[0][6:].sort() 
print('Sort by ID') 
print(data_set) 
print() 

代码运行,但不排序

+4

您应该谨慎考虑您的数据结构! –

+0

并非所有人都是高级或中级 – Supernova

+0

您是否可以正确更新data_set。您想根据ID进行排序,但是您的data_set是包含列表以及字符串的列表 – Mayank

回答

1

考虑到每行的固定长度为三项(即:ID,日期,标题),您可以先对输入进行重新组合,然后进行排序。

rows = [ data_set[i:i+3] for i in range(0,len(data_set), 3)] 
print sum(sorted(rows, key = lambda r:r[0][0]), []) 

输出:

[['ID=j234hg\n'], ['Date=19 October 1969\n'], ['Title=Court Scene With Cardinal Richelieu\n'], ['ID=n4j6l3j\n'], ['Date=7 December 1972\n'], ['Title=Mr. Pither'], ['ID=s4k5jk\n'], ['Date=8 December 1970\n'], ['Title=Crossing The Atlantic On A Tricycle\n']] 
-1

使用集合或字典来完成这类任务。随着名单,你可以最终打印与字“ID”第一要素,但没有相关的数据作为标题,日期等

0

假设你data_set看起来是这样的:

>>> data_set = [['ID=j234hg\n', 'Date=19 October 1969\n', 'Title=Court Scene With Cardinal Richelieu\n'], ['ID=s4k5jk\n', 'Date=8 December 1970\n', 'Title=Crossing The Atlantic On A Tricycle\n'], ['ID=n4j6l3j\n', 'Date=7 December 1972\n', 'Title=Mr. Pither']] 

尝试

>>> res = sorted(data_set, key=lambda x: x[0]) 
>>> res 
[['ID=j234hg\n', 'Date=19 October 1969\n', 'Title=Court Scene With Cardinal Richelieu\n'], ['ID=n4j6l3j\n', 'Date=7 December 
1972\n', 'Title=Mr. Pither'], ['ID=s4k5jk\n', 'Date=8 December 1970\n', 'Title=Crossing The Atlantic On A Tricycle\n']] 
+0

输出放置所有的日期,然后ID然后标题,让我试着调整代码 – Supernova