我有一个包含字母和数字列表的txt文件,我需要根据数字对其进行排序,我该怎么做呢?

时间:2018-04-03 19:30:20

标签: python list sorting text-files

到目前为止我所拥有的是一个读取文本文件并将其放入列表的程序。 txt文件如下所示:

asdf:15.3 eazzz:31.12 qw:1.65 ...

我是Python的新手,所以我还在试图弄清楚如何正确地做到这一点。我知道这会将数字与字母分开,但我不知道从哪里开始。

def get_num(str):
    items = str.split(':')
    return float(items[1])

所需的输出将按照各自的字母降序排列。我知道这可以通过“排序”完成,但如果可能的话,我也希望看到它用for循环完成。

2 个答案:

答案 0 :(得分:2)

不要使用str作为输入名称。 要对包含元组(name, value)的列表进行排序,请执行以下操作:

sorted(list_name, key = lambda x : x[1], reverse = True)

key = lambda x : x[1]表示您希望按value对列表进行排序,而reverse = True表示您希望排序按降序排列。

答案 1 :(得分:1)

data  = '''asdf:15.3
eazzz:31.12
qw:1.65
adasf:7.3'''

# convert string to list
lst = data.split('\n')

#sort list of data by two things. first the string part second number part
print '\n'.join(sorted(lst, key=lambda item:(item.split(':')[0],float(item.split(':')[1])), reverse = True))

输出:

qw:1.65
eazzz:31.12
asdf:15.3
adasf:7.3