您好我正在编写一个程序来从文件中读取字典,然后它将首字母大写并按字母顺序排序
我想要的是将字典转换为列表。然后我尝试了循环但不知何故它不起作用
我的文件包含
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]
答案 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