我想将值附加到字典中的键,其中值实际上是列表。可能有一个列表,或者可能有多个列表。
我正在尝试这样做的当前方式,我尝试添加的新列表只是覆盖了最后一个列表。据我所知,我不能将列表附加到这样的字典中:
my_dict.append(my_list))
相互覆盖的当前代码:
urls[domain] = [uri, datecreated]
这可能吗?如果是这样,怎么样?
示例结果如下所示
print all keys and values in urls{}:
google.com : ['/helloworld', 2010-04-02], ['/apage/anotherpage', 2015-09-12]
microsoft.com : ['/awebpage', 2009-02-01], ['/bananas', 2015-12-24], ['/anothergreaturi', 205-12-10]
答案 0 :(得分:6)
您可以将每个词典条目列为一个列表,以便附加到该列表。
>>> a = Linter("ahahah")
>>> a.write_file()
>>> a = dict()
>>> a["first"] = []
>>> a["first"].append([1,2,3])
>>> a["first"].append([4,5,6])
>>> a["second"] = []
>>> a["second"].append([7,8,9])
>>> a
{
'second':[
[7, 8, 9]
],
'first': [
[1, 2, 3],
[4, 5, 6]
]
}
但老实说,在某些时候只考虑使用类?
答案 1 :(得分:3)
这是你想要实现的目标吗?
>>> d={'a': ['b']}
>>> d['a']
['b']
>>> d['a'] += ['c']
>>> d['a']
['b', 'c']
答案 2 :(得分:3)
您可以使用defaultdict来完成您的需要。
from collections import defaultdict
my_dict = defaultdict(list)
my_dict[1].append([1,2])
my_dict[1].append([3,4])
my_dict[2].append([8,9])
现在,您可以访问每个关键元素,就像访问dictionary
>>> my_dict[1]
[[1, 2], [3, 4]]
>>> for k, v in my_dict.iteritems():
print k,v
1 [[1, 2], [3, 4]]
2 [[8, 9]]
答案 3 :(得分:0)
class My_Dictionary(dict):
def __init__(self):
self = dict()
def add(self, key, value):
try:
self[key].append(value)
except KeyError:
self[key] = [value]
if __name__ == '__main__':
dict_obj = My_Dictionary()
key = 0
take_1 = [1,6,2,4]
take_2 = [7,3,5,6]
dict_obj.add(key, take_1)
dict_obj.add(key, take_2)
print(dict_obj)
此代码将以您想要的格式返回字典。 {0:[[1,6,2,4],[7,3,5,6]]}