使用首字母大写的文件对字典元素进行排序

时间:2018-05-13 10:15:32

标签: python list

您好我正在编写一个程序来从文件中读取字典,然后它将首字母大写并按字母顺序排序

我想要的是将字典转换为列表。然后我尝试了循环但不知何故它不起作用

我的文件包含

banana:123
sweet:32
nutella:23

我的代码:

f = open("test.txt", "r")
lst=[]
for line in f.readlines():
    data,price = line.split(":")
    lst.append([data, (price)])
f.close()

现在,当我尝试循环获取索引时,它会给我错误

for i in range(lst[0:len(lst)][0]):

它给了我错误:

TypeError: 'list' object cannot be interpreted as an integer

我的问题是让人感到困惑......我需要做的主要事情是每行的第一个字母变为大写,并按字母顺序排序。 还请告诉我在这个for循环中我做错了什么...我希望索引从[0]开始到len [lst]

2 个答案:

答案 0 :(得分:1)

问题是range,在您的情况下,只需要int输入。您正在提供list输入。具体来说,lst[0:len(lst)][0]输出lst的第一个元素,这是一个列表本身。

要逐行循环列表,您应该使用range(len(lst))

for i in range(len(lst)):

有关range语法的详细信息,请参阅docs

答案 1 :(得分:1)

范围问题的

只需使用

for i in range(len(lst)):

您提供的是列表而不是整数

排序的

使用此

from operator import itemgetter
f = open("test.txt", "r")
lst = []
for line in f.readlines():
    data, price = line.split(":")
    lst.append([data, (price)])
f.close()
lst = sorted(lst, key=itemgetter(1))
print map(lambda x: x[0] + ":" + x[1],  map(lambda x: [x[0].capitalize(), x[1]], lst))

       .....
       .....
 and write to the file