Python 3.x 扩展列表

Python 3.x 扩展列表,python-3.x,list,dictionary,Python 3.x,List,Dictionary,目前,我正在整理我的一个项目,使用更具python风格的东西。现在,我很难从属于列表的字典中通过值扩展列表 my_dict = {'a': [1, 2, 3], 'b': [2, 3, 4], 'c': [4, 5, 6]} criteria = ['a', 'c'] my_list = [] for c in criteria: my_list.extend(my_dict[c]) 结果在[1,2,3,4,5,6]中,这是所寻求的结果,其中 my_list = [] my_list.

目前,我正在整理我的一个项目,使用更具python风格的东西。现在,我很难从属于列表的字典中通过值扩展列表

my_dict = {'a': [1, 2, 3], 'b': [2, 3, 4], 'c': [4, 5, 6]}
criteria = ['a', 'c']
my_list = []
for c in criteria:
    my_list.extend(my_dict[c])
结果在
[1,2,3,4,5,6]
中,这是所寻求的结果,其中

my_list = []
my_list.extend(my_dict[c] for c in criteria)

结果是一个嵌套列表
[[1,2,3],[4,5,6]]
。我找不到发生这种情况的原因

您的代码不起作用,因为它试图用生成器理解的结果扩展列表,这是一个列表列表:

>>> list(my_dict[c] for c in criteria)
[[1, 2, 3], [4, 5, 6]]
这是因为
my_dict[c]
本身就是一个列表

一种更具python风格的方法是使用列表理解:

my_dict = {'a': [1, 2, 3], 'b': [2, 3, 4], 'c': [4, 5, 6]}
criteria = ['a', 'c']
my_list = [item for k in criteria for item in my_dict[k]]
>>> my_list
[1, 2, 3, 4, 5, 6]

这将使用嵌套循环从dict by条件中选择值,并展平这些值的列表。

您是在问为什么会发生这种情况,还是如何解决?您是否检查了标准中c的my_dict[c]和标准中c的my_dict[c]列表的实际内容?