我有一个文件叫做:“测试.txt“具有以下值:
a 0.1
b 0.22
c 0.3
d 0.4
我现在要做的是根据值添加一个数字。因此,我有以下词典:
dict = {
'0.22':1,
'0.33':7
}
我现在要做的是遍历这些值,看看值在rowvalue和下一行中的值之间。如果这是字典中的值,则应该推送它。所以我的预期结果是:
a 0.1
b 0.22 1
c 0.3
d 0.4 7
我已经有了以下静态工作的代码。但是我想把它改一下,这样它就可以在字典里循环。你知道吗
import os
fname = "test.txt"
import os
path = 'C:\Users\Marc\Dropbox\PROJECTEN\Lopend\speak_distinction'
os.chdir(path)
temp_fname = fname + ".tmp"
with open(fname, 'r') as fin, open(temp_fname, 'w') as fout:
for line in fin:
parts = line.split()
#this should be dynamic
if 0 < float(parts[1]) < 0.2:
#this should be dynamic
parts.append("1")
fout.write(' '.join(parts) + '\n')
else:
fout.write(line)
os.remove(fname)
os.rename(temp_fname, fname)
对我应该在代码中做什么调整有什么想法吗?你知道吗
首先,使用float(或表示float的事件字符串)作为
dict
键是不明智的,因为相同的数字可能有不同的表示形式。 相反,我将使用(float_value, int_value)
的元组列表。你知道吗然后分类。它将根据第一个值(float)进行排序。如果两个元组有相同的值(不太可能),它将使用第二个元组,等等。。。你知道吗
为方便起见,我们还将添加一个最小值:
然后您可以使用bisect来查找该值是否在两个数字之间:
它基本上给了我们在数组中的第一个位置,这个位置比我们的数字要高,这正是你想要的。你知道吗
相关问题 更多 >
编程相关推荐