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

如何从字典生成键按对应值重复的列表?代码编写求助

解决字典键按对应值重复生成列表的问题

嘿,我来帮你理顺这个问题!你当前的内层循环逻辑错啦——你现在是遍历字典所有的值,但实际上每个键只需要对应它自己的那个值来重复就行。

修正你的循环写法

我们只需要对每个键,拿到它对应的重复次数,然后把键重复对应次数添加到列表里就行:

a_dict = {1: 1, 4: 2, 5: 3, 6: 4}
a_list = []
for key in a_dict.keys():
    # 获取当前键需要重复的次数
    repeat_times = a_dict[key]
    # 把键重复repeat_times次,扩展到列表中
    a_list.extend([key] * repeat_times)

运行这段代码后,a_list就会得到你想要的结果:[1, 4, 4, 5, 5, 5, 6, 6, 6, 6]

更Pythonic的列表推导式写法

如果想让代码更简洁,用列表推导式一行就能搞定,逻辑和上面的循环完全一致:

a_dict = {1: 1, 4: 2, 5: 3, 6: 4}
a_list = [key for key, repeat_times in a_dict.items() for _ in range(repeat_times)]

这里我们直接遍历字典的键值对,对每个键按照对应的次数生成重复元素。

为啥你原来的内层循环不行?

你原来的内层循环for value in a_dict.values()会遍历字典里所有的值,比如当处理键1时,会依次拿到1,2,3,4四个值,这会导致每个键都被错误地重复多次,完全不符合你的需求。所以我们要做的是每个键只对应它自己的那个值,而不是所有值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:12:02