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

如何在Python中从频率表输入生成对应数据列表

实现值与频率映射并生成展开列表

1. 处理输入并创建{值:频率}字典

先把空格分隔的输入字符串转成整数列表,再用zip()将值列表和频率列表配对,直接转成字典就是最简洁的实现方式:

# 模拟输入(实际可通过input().split()获取用户输入)
value_input = "1 2 3 4 5"
freq_input = "5 4 3 2 1"

# 转换为整数列表
values = list(map(int, value_input.split()))
freqs = list(map(int, freq_input.split()))

# 创建值-频率字典
value_freq_dict = dict(zip(values, freqs))
print(value_freq_dict)  # 输出: {1:5,2:4,3:3,4:2,5:1}

如果偏好手动循环实现,也可以这么写:

value_freq_dict = {}
for v, f in zip(values, freqs):
    value_freq_dict[v] = f

2. 生成展开后的列表

有了字典后,用两种常用方式都能快速生成目标列表:

方法一:列表推导式

expanded_list = [v for v, freq in value_freq_dict.items() for _ in range(freq)]
print(expanded_list)  # 输出: [1,1,1,1,1,2,2,2,2,3,3,3,4,4,5]

方法二:循环累加

expanded_list = []
for v, freq in value_freq_dict.items():
    expanded_list.extend([v] * freq)

注意事项

  • 必须保证值输入和频率输入的元素数量一致,否则zip()会自动截断到较短列表的长度,导致部分数据丢失。
  • 如果值列表存在重复值,字典中后面的键会覆盖前面的(因为字典键唯一),若你的场景可能出现重复值,需要提前处理或改用列表存储元组的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:35:23