You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python从字典列表值生成一维值列表失败,问题出在哪?

问题描述

我在Python中定义了如下字典:

my_dict = dict({'98:1E:19:7E:8F:30': ['SAGEMCOM BROADBAND SAS', '22'], '98:1E:19:7E:8F:32': ['SAGEMCOM BROADBAND SAS1']})

我希望生成包含所有值的一维列表,于是尝试了以下列表推导式:

[[sub_val for sub_val in val] for val in my_dict.values()]

但得到的结果是嵌套列表:

[['SAGEMCOM BROADBAND SAS', '22'], ['SAGEMCOM BROADBAND SAS1']]

而我想要的是一维列表:

['SAGEMCOM BROADBAND SAS', '22', 'SAGEMCOM BROADBAND SAS1']

请问我写的代码哪里有问题?

解决方案

你写的列表推导式多嵌套了一层列表结构。外层的[... for val in my_dict.values()]会把每个内层推导的结果(也就是每个子列表)作为元素放进新列表,自然就形成了嵌套结构。

要生成一维列表,只需要把两层循环合并到同一层级的推导里:

[sub_val for val in my_dict.values() for sub_val in val]

这个写法等价于:

result = []
for val in my_dict.values():
    for sub_val in val:
        result.append(sub_val)

另外还有两种常用方法可以实现需求:

  1. 使用itertools.chain,它能直接把多个可迭代对象拼接成一个迭代器,再转成列表:
from itertools import chain
list(chain.from_iterable(my_dict.values()))
  1. 先初始化空列表,再逐个extend子列表:
result = []
for val in my_dict.values():
    result.extend(val)

内容的提问来源于stack exchange,提问作者zoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:55:16