我在生成字典方面遇到了一些麻烦,我已将其命名为" appInfo"使用下面的代码。当它像这样运行时,只有最后输入的应用程序编号会保存在appInfo字典中。看起来应该很容易,但我还没有找到解决办法。我使用的是Python 3.5.2。
appDict={'AA':{'appType':'app name one','fileLoc':'C:\\app1.docx'},
'BB':{'appType':'app name two','fileLoc':'C:\\app2.docx'},
'CC':{'appType':'app name three','baseDoc':'C:\\app3.docx'},
'DD':{'appType':'app name four','baseDoc':'C:\\app4.docx'},
'EE':{'appType':'app name five','baseDoc':'C:\\app5.docx'},
'FF':{'appType':'app name six','baseDoc':'C:\\app6.docx'}}
appInfo=dict()
appNumList=[]
while True:
print('Enter an application number (XX-00-00). Press Enter to stop:')
appNum=str(input())
if appNum=='':
break
appNumList=appNumList+[appNum]
appShow='/'.join(appNumList)
appNumLength=len(appNumList)
appNumSep=re.compile(r'[A-Z]+')
mo=appNumSep.findall(appNum)
for num in appDict.keys():
if num in mo:
appInfo[num]=appDict[num]
print(appInfo)
答案 0 :(得分:1)
你的数组 mo 会在while循环的每次迭代中被覆盖。循环浏览appDict.keys() mo 时,只包含最新的输入。我认为你打算像这样附加 mo :
appDict={'AA':{'appType':'app name one','fileLoc':'C:\\app1.docx'},
'BB':{'appType':'app name two','fileLoc':'C:\\app2.docx'},
'CC':{'appType':'app name three','baseDoc':'C:\\app3.docx'},
'DD':{'appType':'app name four','baseDoc':'C:\\app4.docx'},
'EE':{'appType':'app name five','baseDoc':'C:\\app5.docx'},
'FF':{'appType':'app name six','baseDoc':'C:\\app6.docx'}}
appInfo=dict()
appNumList=[]
mo=[]
while True:
print('Enter an application number (XX-00-00). Press Enter to stop:')
appNum=str(input())
if appNum=='':
break
appNumList=appNumList+[appNum]
appShow='/'.join(appNumList)
appNumLength=len(appNumList)
appNumSep=re.compile(r'[A-Z]+')
mo.append(''.join(appNumSep.findall(appNum))
for num in appDict.keys():
if num in mo:
appInfo[num]=appDict[num]
print(appInfo)