[英]Python Create a Dictionary of Lists
好吧,我进行了搜索,但没有找到具体问题的答案。 我正在创建列表字典。 我在while循环中创建了一些值列表以及与其关联的名称:
dict = {}
list = [1, 2]
name = key1
list = [3, 4]
name = key1
如果名称相同,则列表将附加到键的现有值集之后。 这是我的代码:
if key in dict:
dict[key].append(list)
else:
dict[key] = list
这是我想要的输出:
字典= {'key1':[1,2],[3,4]}
但是我一直得到以下输出:
字典= {'key1':[1、2,[3、4]]}
该键的第二个列表放在第一个列表的内部。
这是一个非常常见的错误。 我相当确定您正在执行以下操作:
list1.append(list2)
相反,您想这样做:
list1.extend(list2)
这是一个非常有用的资源
但是,由于要[[1,2], [3,4]]
而不是[1,2,3,4]
,因此应执行以下操作:
if key in d1:
d1[key].append(l1)
else:
d1[key] = [l1]
这是因为您每次都将一个列表追加到一个列表中。 您需要改为使用扩展。 码:
keys = ['name1', 'name2', 'name2', 'name1']
somelist = [1, 2, 3]
d = {}
for k in keys:
d.setdefault(k, []).extend(somelist)
实际上,您需要一个列表列表,您的输出将如下所示:
字典= {'key1':[[1,2],[3,4]]}
要使键与多个值关联,可以使用以下行:
dictionary.setdefault(key, []).append(a_list)
如果字典中不存在键,则setdefault会将键与默认值[]
关联。
同样,您应该避免使用dict
或list
定义自己的变量,它们是built-in
变量,您需要重新定义它们。
编辑
为了使读者明白,这可能会有所帮助,它是一个交互式python会话的输出:
>>> d = {}
>>> d.setdefault('key1', []).append([1, 2])
>>> d.setdefault('key1', []).append([3, 4])
>>> d
{'key1': [[1, 2], [3, 4]]}
我希望不要误解,因为字典= {'key1':[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")
结果字典:
{'key1':[[1、2],[3、4]]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.