python - 将值附加到字典列表

标签 python

我正在尝试将依赖值附加到如下列表中并遇到关键错误...我有下面的预期输出..任何人都可以提供有关此处错误的输入吗?

'''
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/

相关文章:

python - python shell 中 print(<variable_name>) 和 <variable_name> 之间的区别?

python 列表项组合

python - 逐元素添加一维和二维 numpy 数组

Python Pandas 应用,将字典作为参数传递

php - 我应该如何创建一个总是超时的测试资源

python - Django - 设置 urls.py 和 views.py

python - 创建多边形的算法(无Thiesen/Voronoi)

Python - 可以简化多个 if 条件和追加

python - 如何从 pandas 列中提取特定文本

python - 删除并替换在 Python 中打印到终端的最后一个字符