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

Python3无循环实现计数字典转换为带重复元素列表的方法

Python字典转重复元素列表实现方案

前置说明

此处的「不使用循环」指代码层面不编写显式的for/while循环,底层执行的隐式迭代不在限制范围内。Python3.7及以上版本字典默认保留插入顺序,可直接得到匹配顺序的结果,低版本Python可先对字典键排序再执行后续操作。

方案1:内置函数实现(无额外依赖)

  • 核心逻辑:
    • 对每个键值对k:v,通过[k] * v生成包含v个k的子列表
    • 借助sum函数的拼接能力,以空列表为初始值把所有子列表拼接为最终结果
  • 代码实现:
d = {10:1, 20:2, 30:3}
res = sum(map(lambda x: [x[0]] * x[1], d.items()), [])

方案2:itertools工具实现(性能更优)

  • 核心逻辑:
    • 用itertools.repeat生成对应数量的重复元素迭代器,避免生成临时子列表占用额外内存
    • 用itertools.chain.from_iterable拼接所有迭代器元素,转换为列表后得到结果
  • 代码实现:
import itertools
d = {10:1, 20:2, 30:3}
res = list(itertools.chain.from_iterable(map(lambda x: itertools.repeat(x[0], x[1]), d.items())))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:36:03