将列表附加到Python中的字典中的列表中

时间:2016-01-31 11:54:54

标签: python list dictionary

所以我只是试图将包含一组数字的列表附加到当前列表的字典中的值。

我不知道它是否重要,但字典中的某些列表是空的,有些列表包含整数。

我认为这很简单,并且对我来说最明显的事情就是将列表附加到这个值上。

middlenumberdic[y].append(numberlist)

然而,这给了我以下错误:

    middlenumberdic[y].append(numberlist)
KeyError: 786

所以我决定问题是列表无法与列表一起使用,所以我将其分解为单个整数

for value in numberlist:
    middlenumberdic[y].append(value)

但这只是给了我同样的KeyError事件

    middlenumberdic[y].append(value)
KeyError: 792

从我的观点来看,我会认为middlenumberdic[y]会返回[123,456,789](因为这是分配给它的那个)然后我可以追加到该列表但显然我不能。

在做所有这些之前,我尝试了middlenumberdic[y] = numberlist,尽管这并没有导致错误,但它所做的只是覆盖我现有的列表而不是添加它。

阅读How to append to a list in a dictionary?后 和Append to a list within a dictionary我仍然不是明智的,这就是我发布这个的原因。

对于第一个问题,给出的答案与我使用的不起作用的解决方案大致相同,另一个问题是复杂的让我理解。

这是我在本网站上提出的第一个问题,如果我做错了事,我很抱歉。

P.S他们是更多的剧本,但我认为这只是必要的

2 个答案:

答案 0 :(得分:1)

您的问题不在于附加部分。它可以访问字典中的列表。 KeyError表示没有索引为786或792的元素。

In [1]: a = dict()

In [2]: a[5] = []

In [3]: a
Out[3]: {5: []}

In [4]: a[5]
Out[4]: []

In [5]: a[5].append([3,4,5])

In [6]: a
Out[6]: {5: [[3, 4, 5]]}

答案 1 :(得分:0)

我认为您正尝试使用不存在的密钥进行访问。所以,你得到了这个KeyError。在那种情况下,

for value in numberlist:
     middlenumberdic[y].append(value)

将其替换为以下内容:

for value in numberlist:
    middlenumberdic.setdefault(y,[]).append(value)

我认为现在应该可以了。