我正在将txt
文件中的项目读入list
,然后将其转换为字典,如下所示-
def getfeatures_into_list(inputfilename):
fid=open(inputfilename,"r")
dict_Lab_Features=defaultdict(int)
list1=[]
for line in fid:
list1.append(line.rstrip().lower())
list1=list(set(list1)) #Removing duplicates
c=0
for items in sorted(list1):
dict_Lab_Features[items]=c
c+=1
dict_Lab_Features=sorted(dict_Lab_Features.items(), key=operator.itemgetter(1))
print(dict_Lab_Features['Hello'])
我在打印报表时出错了
list indices must be integer,not str
编辑我想按值升序对dict进行排序。你知道吗
dict_Lab_Features
在调用dict.items()
时不再是dict
。一个dict.items()
对象不能用字符串键寻址(它实际上只是一个元组列表[(key, value), ... ]
)。你知道吗此外,按名称“排序”你打算使用的词典也没有多大意义。看起来您要么需要一个
collections.OrderedDict
,要么干脆跳过订购在此行中:
您重新分配了
dict_Lab_Features
,因此它是一个列表。这是因为sorted()
的输出总是一个列表。当然,列表不能将字符串作为索引。你知道吗你应该学会把字典看作是天生的未分类的。当您确实需要跟踪插入顺序时,可以使用
OrderedDict
,但对于大多数情况,常规的dict
就可以了。你只需要养成按所需顺序遍历字典的习惯,而不用担心字典是否按任何顺序存储。你知道吗按排序顺序遍历字典的通常方法是循环遍历已排序的键,例如:
或者
或者,如果要循环排序的值
不能对dict进行排序。dict是元素的无序映射。你知道吗
让我们分析一下下面这行:
来自sorted的文档:
所以在那之后,dict\u Lab\u Features是一个键值元组的排序列表。之后,您尝试用
'Hello'
索引它在这里您尝试用
'Hello'
索引该列表,这就是为什么会出现错误list indices must be integer,not str
相关问题 更多 >
编程相关推荐