试图将字典放入字典中

时间:2015-02-27 21:38:02

标签: python dictionary

bank = {'id':{'moneys':{}}}

with open(bankID.txt, 'r') as a:
    for key in a.readlines():
        bank['id']=[str(key)[0:3]]
with open(banknumbers.txt) as b:
    for value in b.readlines():
        bankID = value[0:3]
        bankMoney = int(value[4:9])

        if bank['id'] == bankID:
              bank['id]['money']= bankMoney
        #bank[bankID] = bankMoney  <--this one kinda works but it isnt right.
        #an example of the 2nd txt file would look like
        #234 8763    so id number and money respectively

为什么我的第一个forloop没有用密钥分配我的所有id。当我打印(bank ['id'])时,唯一出现的值是第一个键读取。 在我的第一个txt文件中,它只有银行ID,第二个txt文件有银行ID和后面的金额。我似乎无法弄清楚如何比较我的字典的银行ID和第二个txt文件的银行ID,并分配物有所值。

所以我希望输出看起来像{'875':234,'576':345,'676':8837}

2 个答案:

答案 0 :(得分:0)

为什么我的第一个forloop没有为我的所有id分配一个密钥。

因为你告诉它指定键“id”值[str(key)[0:3]] 所以你只用了一个键,字符串文字“id”和[str(key)[0:3]]的最后一个值。

除非你有3个要跟踪的值,比如bankId,transactionId和amount,否则你实际上并不需要字典中的字典。

假设banknumbers.txt看起来像这样:

# 234 8763  44.55 -- so a bank number, a transaction number and some money.

这会在词典中为您提供一个词典:

bank = {}

with open(bankID.txt, 'r') as a:
    for key in a.readlines():
    bank[str(key)[0:3]] = {}
with open(banknumbers.txt) as b:
    for value in b.readlines():
        bankID = value[0:3]
        transactionId = int(value[4:9])
        money = float(value(9:19))
        bank[bankID][transactionId] = money

您应该阅读python教程的相关部分:https://docs.python.org/2/tutorial/datastructures.html#dictionaries

答案 1 :(得分:-1)

我认为你误解了词典。你在for循环中的每次迭代都覆盖了bank ['id']。我不确定你想要什么,但你可能想要一份银行清单。代码是:

bank = []

with open(bankID.txt, 'r') as a:
    for key in a.readlines():
        bank.append({'id':[str(key)[0:3]], 'moneys': 0})

with open(banknumbers.txt) as b:
    for value in b.readlines():
        bankID = value[0:3]
        bankMoney = int(value[4:9])

        for bnk in bank:
            if bnk['id'] == bankID:
                bnk['money'] = bankMoney