我试图将依赖值附加到下面的列表中,并遇到一个keyerror…我有下面的预期输出..有人能提供关于这里的错误的输入吗?你知道吗
'''
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'
以下是对我有效的版本
你知道吗输出:- {'313137':['12345'、'34567'、'99999'、''''、'''、'253036':['']}
您正试图在列表的键存在于字典中之前将其追加到列表中。解决这个问题最简单的方法就是把你的
internal_dep
字典变成collections.defaultdict
。然后,如果该键不存在,则会自动创建一个默认值(可以指定)。你知道吗还要注意,
+=
相当于list.extend
,而不是list.append
,因此您应该使用以下选项之一:你所拥有的不会给你一个错误,但它也不会做你想做的!你知道吗
你可以尝试以下方法。基本上检查dict是否已经有了这个键,如果没有,就添加一个新的键,否则就添加到列表中。你知道吗
通过此更改,您的总体代码将如下所示:
相关问题 更多 >
编程相关推荐