我是这里的新手,也是Python的新手。 我想知道是否有人知道如何按大小对生成的列表进行排序。
我在这里有一段代码。排序应从小到大。 6.52、26.4
for i in x:
pfad = (i)
title=(i)
size = (i)
bild = (i)
liste=('<a href="' + pfad + '">' + title + '<br>;' + size + '<div><img src="' + bild + '" /></div></a></br>')
print(liste)
<a href="URL/">Title<br>;26.14;GB<div><img src="https://URL.jpg" /></div></a></br>
<a href="URL/">Title<br>;6.52;GB<div><img src="https://URL.jpg" /></div></a></br>
<and much more>
我尝试过
liste = csv.reader(liste,delimiter=';')
liste = sorted(liste,key=operator.itemgetter(1))
for i in liste:
print (i)
和其他内容(lambda等),但它不起作用。 有人有建议吗?
特隆问候
答案 0 :(得分:0)
如果您确定只会得到像[1, 2, 3, 4]
这样的简单列表,那么默认情况下,使用sorted()
方法是按升序排列的,因此不需要键。
liste = csv.reader(liste,delimiter=';')
liste = sorted(liste)
for i in liste:
print (i)
对于降序,将reverse = True
添加到排序方法中。
您可以使用itemgetter()
从列表中检索元素,如下所示:
>>> from operator import itemgetter
>>> z = ['foo', 'bar','qux','zoo']
>>> itemgetter(1)(z)
如果仍然要使用itemgetter进行排序,则需要至少有二维列表
>>> a = [[1,2,1,2,3,4,5,6,3,4],[1,2,3,4],[4,5,7,8], [1,2,2,3,4,5,4,65,3,4,3,2,2]]
>>> sorted(a, key=itemgetter(3))
[[1, 2, 1, 2, 3, 4, 5, 6, 3, 4], [1, 2, 2, 3, 4, 5, 4, 65, 3, 4, 3, 2, 2], [1, 2, 3, 4], [4, 5, 7, 8]]
>>>
但是我认为csv阅读器很可能会返回字典
liste = csv.reader(liste,delimiter=';')
liste = sorted(liste, key=lambda k: k['name of the column'])
for i in liste:
print (i)
答案 1 :(得分:0)
感谢您的帮助。
我现在有一个示例代码。
#!/usr/bin/env python3
import csv
liste = ['Name:1 ;26.1; E-a', 'Name:2 ;262; E-b', 'Name:3 ;7.92; E-c', 'Name:4 ;4.6; E-d', 'Name:5 ;4.74; E-e']
liste_csv = csv.reader(liste,delimiter=';')
liste_sort = sorted(liste_csv, key=lambda k: k[1])
for i in liste_sort:
print (i)
我遇到以下问题
['Name:1 ', '26.1', ' E-a']
['Name:2 ', '262', ' E-b']
['Name:4 ', '4.6', ' E-d']
['Name:5 ', '4.74', ' E-e']
['Name:3 ', '7.92', ' E-c']
但是我想要
['Name:4 ', '4.6', ' E-d']
['Name:5 ', '4.74', ' E-e']
['Name:3 ', '7.92', ' E-c']
['Name:1 ', '26.1', ' E-a']
['Name:2 ', '262', ' E-b']
我该怎么做?
对不起,开始不顺利。 我刚刚开始学习Python。
问候特隆