def makeDict(filename):
with open(filename,"r") as f:
dict_={}
for line in f:
(key,value1,value2)=line.split()
dict_[key]=[(float(value1),float(value2))]
mylist=[]
for value1 in dict_:
if number < value1 < number:
mylist.append(key)
最后一个问题,我应该在这里完成。似乎我的值仍然没有作为浮点数出现,因为我试图检查值是否在两个数字之间,我得到这个错误
TypeError:unorderable类型:int()&lt; STR()
newDict=makeDict("file.txt")
>>> testdict(500,530,newDict)
line 28, in testdict
for k,v in newDict.iteritems():
AttributeError: 'dict' object has no attribute 'iteritems'
答案 0 :(得分:2)
您的函数makeDict
不会返回值。
def makeDict(filename):
with open(filename,"r") as f:
d={}
for line in f:
(key,value1,value2)=line.split()
d[key]=[(float(value1),float(value2))]
# Return the dictionary
return d
修改强>
代码中的问题是,当您遍历只有一个值的字典时,在这种情况下value1
,它只会遍历键。你想要的是迭代可以用方法.values()
def makeDict(filename):
with open(filename,"r") as f:
dict_={}
for line in f:
(key,value1,value2)=line.split()
dict_[key]=[(float(value1),float(value2))]
mylist=[]
# Iterate through the values instead
for value1 in dict_.values():
if number < value1 < number:
mylist.append(key)
您遇到的最后一个错误可能是由您使用的Python版本引起的。请参阅this post。
在Py3.x中,事情更干净,因为只有dict.items(),dict.keys()和dict.values()可用,它们返回视图对象,就像在Py2中的dict.viewitems()一样.x做了。
因此,您应该将testdict
中的代码更改为for k, v in newDict.items():
答案 1 :(得分:1)
使用float()
函数将值转换为浮点数。
此外,您在使用文件后应该close()
,或者将代码包装在with
块中(这将为您关闭文件):
def makedict(filename):
with open(filename,"r") as f:
d={}
for line in f:
(key,value1,value2)=line.split()
d[key]=(float(value1),float(value2))
return d
最后,不要将dict
用作变量名,因为它已作为内置存在。改为使用dict_
(或其他名称):
dict_ = makeDict["file.txt"]
修改强>
带上一粒盐,因为它只是根据您问题中的信息猜测,但您想要改变这一点:
for value in dict_:
if number < value1 < number:
mylist.append(key)
到此:
for k, v in dict_.items():
if number < v[0] < number:
mylist.append(k)
答案 2 :(得分:0)
def makedict(filename):
filename=open(filename,"r")
d={}
for line in filename:
(key,value1,value2)=line.split()
d[key]=(float(value1),float(value2))
答案 3 :(得分:0)
使用此:
def makedict(fname):
filename=open(fname,"r")
d={}
for line in filename:
(key,value1,value2)=line.split()
d[key]=[(value1),(value2)]
print(d) ## print the dictionary
您将这些值存储为列表。
例如:
档案 -
A B C
1 2 E
3 4 E
5 6 E
7 8 E
输出(字典) -
{'3': ['4', 'E'], '7': ['8', 'E'], 'A': ['B', 'C'], '5': ['6', 'E'], '1': ['2', 'E']}
此处A,1,3,..
为关键字,['B', 'C'], ['2', 'E'], ..
为对应值。