如何在Python字典中将多个列表附加到一个键?

3
我想将列表值追加到字典中的一个键上,其中这些值实际上是列表。可能有一个列表,也可能有多个列表。
我目前尝试的方法是,我尝试添加的新列表只会覆盖上一个列表。据我所知,我也无法像这样将列表附加到字典中:
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] 

我们需要一个示例字典和所需的结果,不完全清楚您在询问什么。 - timgeb
本文末尾添加了示例。 - Thisisstackoverflow
4个回答

7
您可以将每个字典条目设置为列表,然后将内容添加到该列表中。
>>> 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]
          ]
}

但是说实话,有些时候还是考虑使用类吧?

嗯,好的。我会试一下。类让我感到有些害怕,以前从未接触过。但我并不反对使用它们。 - Thisisstackoverflow
@这是stackoverflow;相信我,一开始它们看起来有点“可怕”,因为它们有所有那些__方法和名称更改(即类中的函数称为方法等),但这是值得的。如果您正在跟随教程,请按照教程进行,不要跳过类。它们很可能很快就会在书籍/教程中出现。 - ljetibo

3

您想实现的是这个吗?

>>> d={'a': ['b']}
>>> d['a']
['b']
>>> d['a'] += ['c']
>>> d['a']
['b', 'c']

请注意,作者说一个值也可以是多个列表(我假设是列表的列表)。完全不清楚要求什么。 - timgeb
那是一个列表。我要找的是一个键内的多个列表。 - Thisisstackoverflow
多重列表是什么意思?是指列表的列表吗? - midori
在这里的讨论中,这些都是列表的列表。@pianista创建了一个包含字符串“b”的列表的字典。然后他说["b"](这是一个列表)+ ["c"](这也是一个列表)。在Python中,执行[1]+[2]得到[1,2],即“添加”列表将它们连接成更大的列表。这也是一个有效的答案,因为[1]+[2, [1,2]][1, 2, [1, 2]] - ljetibo
我编辑了我的帖子。ljetibo的回答正是我所寻找的。对于造成的困惑,我感到抱歉。 - Thisisstackoverflow

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])

现在您可以像访问字典一样,访问每个关键元素。
>>> 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]]

这看起来也可以,而且看起来更加简洁。谢谢。 - Thisisstackoverflow
没问题。计数器模块非常有用。确保去看一下。 - Daniel

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]]}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接