Python 在dict中进行打字
当逐行解析文件时,我生成一个字符串列表。其中一个字符串是一个数字,所以我想把它转换成一个浮点数 所以 应该是Python 在dict中进行打字,python,python-2.7,dictionary,casting,floating-point,Python,Python 2.7,Dictionary,Casting,Floating Point,当逐行解析文件时,我生成一个字符串列表。其中一个字符串是一个数字,所以我想把它转换成一个浮点数 所以 应该是 ["PRO", "CCC", 4629.00] 我的解析器逐行读取文件,但当我试图用上面列表的[2]项作为浮点值填充dict of dict时,如下所示: fh = open("textfile_w_header","r") def codon_preference_table_with_AA(fh): header = fh.readline() for line i
["PRO", "CCC", 4629.00]
我的解析器逐行读取文件,但当我试图用上面列表的[2]项作为浮点值填充dict of dict时,如下所示:
fh = open("textfile_w_header","r")
def codon_preference_table_with_AA(fh):
header = fh.readline()
for line in fh:
row = line.split()
row[2] = float(row[2])
myDict = {row[0]:{row[1]:row[2]}}
print(myDict)
我得到一个值错误:
ValueError: Mixing iteration and read methods would lose data
在制作字典之后,是否有其他方法将这个最里面的值作为浮点数进行类型转换?为什么不遵循代码
line = "PRO CCC 4629.00"
row = line.split()
f = float(row[2])
myDict = {row[0]:{row[1]:f}}
print(myDict)
它输出
{'PRO': {'CCC': 4629.0}}
采纳你的准则
fh = open("textfile_w_header","r")
def codon_preference_table_with_AA(fh):
header = fh.readline()
for line in fh:
row = line.split()
f = float(row[2])
myDict = {row[0]:{row[1]:f}}
print(myDict)
不要将fh中的行和readline中的行混合迭代。使用nextfh代替跳过标题行。使用nextfh代替fh.readline这部分我不清楚:文本文件中的标题是我不想制作字典的内容,因此我使用readline跳过第一个标题行,然后遍历其余部分来构建字典。有更好的方法吗?哇,这怎么会是复制品?你看过问题了吗?是关于打字的!谢谢你,阿提拉。你的解决方案完全符合我的需要。
fh = open("textfile_w_header","r")
def codon_preference_table_with_AA(fh):
header = fh.readline()
for line in fh:
row = line.split()
f = float(row[2])
myDict = {row[0]:{row[1]:f}}
print(myDict)