将字典存储在二进制文件中时,键值对不起作用,为什么?
Key-value pairs not functioning of a dictionary when storing the dictionary in a binary file, why?
代码的目的是将 roll no 分配给 name,两者都作为键值对存储在字典中。对于给定的卷,搜索功能应该没有 return 相应的名称,但它没有,我不知道为什么。
这是错误代码:
import pickle
f=open('atextfile.dat','wb')
d={}
while True:
name=input('enter name: ')
rollno=int(input('enter rollno: '))
d[rollno]=name
con=input('Do you want to continue?(y/n): ')
if con=='n':
break
print(d)
pickle.dump(d,f)
f.close()
def search():
f=open('atextfile.dat','rb')
r=pickle.load(f)
roll=int(input('what roll no number?: '))
try:
n=d[rollno]
print('name is',n)
except:
print('rollno not found :/')
f.close()
search()
This is the anomalous output I am getting:
将 d[rollno]
更改为 d[roll]
,因为您使用变量 roll 加载文件内容
import pickle
f=open('atextfile.dat','wb')
d={}
while True:
name=input('enter name: ')
rollno=int(input('enter rollno: '))
d[rollno]=name
con=input('Do you want to continue?(y/n): ')
if con=='n':
break
print(d)
pickle.dump(d,f)
f.close()
def search():
f=open('atextfile.dat','rb')
r=pickle.load(f)
roll=int(input('what roll no number?: '))
try:
n=d[roll] # this was the fault
print('name is',n)
except:
print('rollno not found :/')
f.close()
search()
代码的目的是将 roll no 分配给 name,两者都作为键值对存储在字典中。对于给定的卷,搜索功能应该没有 return 相应的名称,但它没有,我不知道为什么。
这是错误代码:
import pickle
f=open('atextfile.dat','wb')
d={}
while True:
name=input('enter name: ')
rollno=int(input('enter rollno: '))
d[rollno]=name
con=input('Do you want to continue?(y/n): ')
if con=='n':
break
print(d)
pickle.dump(d,f)
f.close()
def search():
f=open('atextfile.dat','rb')
r=pickle.load(f)
roll=int(input('what roll no number?: '))
try:
n=d[rollno]
print('name is',n)
except:
print('rollno not found :/')
f.close()
search()
This is the anomalous output I am getting:
将 d[rollno]
更改为 d[roll]
,因为您使用变量 roll 加载文件内容
import pickle
f=open('atextfile.dat','wb')
d={}
while True:
name=input('enter name: ')
rollno=int(input('enter rollno: '))
d[rollno]=name
con=input('Do you want to continue?(y/n): ')
if con=='n':
break
print(d)
pickle.dump(d,f)
f.close()
def search():
f=open('atextfile.dat','rb')
r=pickle.load(f)
roll=int(input('what roll no number?: '))
try:
n=d[roll] # this was the fault
print('name is',n)
except:
print('rollno not found :/')
f.close()
search()