Python创建列表字典

时间:2015-04-19 19:49:11

标签: python list dictionary

好吧我搜查了,但是我找不到我的具体问题的答案。我正在创建一个列表字典。我有while循环创建一些值列表以及与之关联的名称:

dict = {} 
list = [1, 2]
name = key1
list = [3, 4]
name = key1

如果名称相同,则列表将附加到密钥的现有值集。这是我的代码:

if key in dict:
    dict[key].append(list)
else:
    dict[key] = list

这是我想要的输出:

  

dictionary = {'key1':[1,2],[3,4]}

但是我一直得到这个输出:

  

dictionary = {'key1':[1,2,[3,4]]}

其中键的第二个列表放在第一个列表中。

4 个答案:

答案 0 :(得分:4)

这是一个非常常见的错误。我相当肯定你在做:

list1.append(list2)

相反,你想做:

list1.extend(list2)

这是very useful resource

但是,由于您需要[[1,2], [3,4]]而非[1,2,3,4],因此您应该:

if key in d1:
    d1[key].append(l1)
else:
    d1[key] = [l1]

答案 1 :(得分:2)

这是因为您每次都会将列表附加到列表中。你需要使用extend。代码:

keys = ['name1', 'name2', 'name2', 'name1']
somelist = [1, 2, 3]
d = {}
for k in keys:
   d.setdefault(k, []).extend(somelist)

答案 2 :(得分:2)

您需要一个列表实际上,您的输出将如下所示:

  

字典= {' key1':[[1,2],[3,4]]}

要使用与多个值相关联的键,您可以使用以下行:

dictionary.setdefault(key, []).append(a_list)
如果您的词典中没有该键,

setdefault会将该键与默认值[]相关联。

另外,您应该避免使用dictlist来定义自己的变量,它们是built-in,您正在重新定义它们。

<强> 修改

为了让读者明白这可能会有所帮助,它是一个交互式python会话的输出:

>>> d = {}
>>> d.setdefault('key1', []).append([1, 2])
>>> d.setdefault('key1', []).append([3, 4])
>>> d
{'key1': [[1, 2], [3, 4]]}

答案 3 :(得分:1)

我希望不要误解,因为词典= {&#39; key1&#39;:[1,2],[3,4]}表达不佳

def add2dict(d, l, k):
  if not k in d:
    dict[k] = []
  d[k].append(l)

dict = {} 
add2dict(dict, [1,2], "key1")
add2dict(dict, [3,4], "key1")

导致dict:

  

{&#39; key1&#39;:[[1,2],[3,4]]}