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)