Python 从字典中提取和合并列表

Python 从字典中提取和合并列表,python,Python,我有一本这样的字典: my_dict = { 'a': ['a','b','c'], 'x': ['x','y','z'] } 提取和合并列表的最简单方法是什么:[a'、'b'、'c'、'x'、'y'、'z'] 编辑:结果可以是任意顺序,我们可以假设列表的元素是唯一的。这里有一种非常简单但不是最佳的方法: my_dict = { 'a': ['a','b','c'], 'x': ['x','y','z'] } l = [] for key in

我有一本这样的字典:

my_dict = { 'a': ['a','b','c'],
            'x': ['x','y','z'] }
提取和合并列表的最简单方法是什么:[a'、'b'、'c'、'x'、'y'、'z']


编辑:结果可以是任意顺序,我们可以假设列表的元素是唯一的。

这里有一种非常简单但不是最佳的方法:

my_dict = { 'a': ['a','b','c'],
            'x': ['x','y','z'] }

l = []
for key in my_dict:
    for element in my_dict[key]:
        l.append(element)

print l

>>> ['a', 'b', 'c', 'x', 'y', 'z']
简单地遍历键,然后遍历值,就像这样,使用列表理解生成列表

[v for val in my_dict.itervalues() for v in val]
您可以遍历字典中的所有键,并将相应的值添加到最终列表中。像这样:

my_list = []
for key in my_dict.keys():
    my_list += my_dict[key]
简明扼要:

sum(my_dict.values(), [])
更新:


这个解决方案是优雅的,但是具有二次时间复杂性。如果您需要大量输入数据,则最好使用其他发布的解决方案。

您尚未指定确定最终订单的规则。它是按排序顺序在键上循环并组合列表,还是按您喜欢的方式将列表组合成一个列表然后进行排序?值的顺序重要吗?所有的kictionary值都有唯一的条目吗?下面的解决方案不检查重复条目,一旦生成最终列表,这将需要额外的步骤。例如,如果“a”是键“y”和“z”列表中的一个条目,您希望看到什么?同样,不需要对元素进行排序也不能解决问题。[x',y,z,a,b,c]的答案也可以吗?DSM:是的,这个结果可以。OP现在已经明确表示顺序并不重要,但我认为,由于简单性,建议人们使用二次算法不是一个好策略。另一点是,如果在多个键下发现元素值,OP希望发生什么情况。两个都进入最终输出,还是只进入一个。示例“a”是键“y”和“z”的一个元素@DSM。我添加了一个关于时间复杂度的注释,您可能想说如果元素不在l:l.appendelement中,这取决于最终输出的内容。
my_list = []
for key in my_dict.keys():
    my_list += my_dict[key]
sum(my_dict.values(), [])