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