使用for循环填充字典

时间:2016-08-24 19:49:31

标签: python for-loop dictionary

我在生成字典方面遇到了一些麻烦,我已将其命名为" 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)

1 个答案:

答案 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)