我正在尝试将依赖值附加到如下列表中并遇到关键错误...我有下面的预期输出..任何人都可以提供有关此处错误的输入吗?
'''
Current output without "+=" in internal_dep[num] +=dep_gerrit :-
{'313137': '12345', '99999': '', '34567': '99999', '12345': '34567'}
EXPECTED OUTPUT:-
{'313137': ['12345', '34567': '99999']}
'''
def findinternaldep(num):
if num == '313137':
output ='12345'
if num == '12345':
output = '34567'
if num == '34567':
output = '99999'
if num == '99999':
output = ''
return output
master_gerrit = ['313137']
internal_dep={}
for num in master_gerrit:
while True:
print "NUM"
print num
(dep_gerrit)=findinternaldep(num)
internal_dep[num] +=dep_gerrit
num = dep_gerrit
if dep_gerrit == '':
break
print internal_dep
错误:-
Traceback (most recent call last):
File "test_internal.py", line 34, in <module>
internal_dep[num] +=dep_gerrit
KeyError: '313137'
最佳答案
您试图在字典中存在键之前将其追加到列表中。解决此问题的最简单方法是将您的 internal_dep
字典设为 collections.defaultdict
。然后,如果该键尚不存在,则会自动创建一个默认值(您可以指定)。
import collections
internal_dep = collections.defaultdict(list)
另请注意,+=
相当于 list.extend
而不是 list.append
,因此您应该使用以下其中一项:
internal_dep[num] += [dep_gerrit] # or
internal_dep[num].append(dep_gerrit)
你所拥有的不会给你一个错误,但它也不会做你想要的!
关于python - 将值附加到字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16288560/