我必须说我对Python很陌生,我无法想出如何解决我的问题。
我有一个看起来像这样的列表
ligne = ['DR', '0.8282312925170068']
我希望它有一个额外的元素:
ligne = ['DETECTION RATE', 'DR', '0.8282312925170068'].
问题是我需要为每个列表添加正确的属性。 我做的是
for line in f.readlines():
ligne = line.split()
for step in {
"DR" : (ligne = ["Detection Rate"] + ligne),
"FAR" :(ligne = ["False Alarm Rate"] +ligne),
"FNR" :(ligne = ["False N Rate"] + ligne),
"MOTA":(ligne = ["MOTA"] + ligne),
"MOTP":(ligne = ["MOTP"] + ligne),
"PFR":(ligne = ["PFR"] + ligne),
"Precision":(ligne = ["Precision"] + ligne),
}.get(ligne[0]):step()
但这不起作用,因为(ligne = [“Detection Rate”] + ligne)不是函数。
怎么可以做到这一点?
答案 0 :(得分:2)
这不起作用,因为{ }
是一个字典(数据结构),而您的代码正试图像switch
语句一样使用它。
首先设置等价:
translation = {
"DR" :"Detection Rate",
"FAR" :"False Alarm Rate",
"FNR" :"False N Rate"}
没有必要翻译转化为自己的文字。
for line in f.readlines():
ligne = line.split()
ligne = [translation.get(ligne[0],ligne[0])] + ligne
答案 1 :(得分:1)
这是过于复杂和语法错误。由于您只需要前缀,只需创建一个字典关键字=>前缀:
d = {"DR":"Detection Rate","FAR":"False Alarm Rate","FNR":"False N Rate"}
然后添加值(如果令牌不在字典中,重复键,它显然覆盖了一半的值):
for line in f:
ligne = line.split()
key = ligne[0]
ligne.insert(0,d.get(key,key))
编辑:第一个单词后面的尾随冒号提示。只需改为:
key = ligne[0].rstrip(":")
ligne.insert(0,d.get(key,key)+":")
注意:
insert
适用于:保存一些临时列表创建(但不保存元素移位)for line in f
可以避免立即读取文件。它只是逐行阅读。答案 2 :(得分:1)
列出新变量:
Vlist=['Detection Rate','False', 'Alarm Rate','False N
Rate','MOTA','MOTP','PFR','Precision']
在txt
中为新行(添加了新变量)填空newline=[]
从文件中的第一个newV和换行符循环并连接在一起
for line,newV in zip(f.readlines(),Vlist):
ligne=line.split()
newV+=ligne
newline+=' '.join(newV)
将新行重写到文件
for i in newline:
f.write(i)