如何按大小对列表进行排序?

时间:2018-11-16 03:30:26

标签: python-3.x list

我是这里的新手,也是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等),但它不起作用。 有人有建议吗?

特隆问候

2 个答案:

答案 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。

问候特隆