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

如何通过用户输入构建指定结构的Python嵌套字典?

解决Python字典的动态填充问题

我明白你现在的困扰——要把输入的成对数字对应填充到字典指定的子字典里,之前用for循环没搞定对吧?别担心,我们一步步来解决这个问题。

首先明确需求:比如输入"2 2 3 5 4 1",其实是三组键值对:'2':2、'3':5、'4':1,要把这些放到主字典的'1'键对应的子字典中。

解决方案步骤

1. 初始化基础字典(如果还没创建)

先搭好目标字典的初始结构(可按需调整):

a = {
    '1': {},  # 待填充的子字典
    '2': {'1': 2, '3': 2, '4':4},
    '3': {'1': 5, '2':2},
    '4': {'1': 1, '2': 4, '5':3},
    '5': {'4':3}
}

2. 处理输入并生成键值对

输入的字符串是空格分隔的数字,我们先转成整数列表,再两两分组得到正确的键值对:

# 获取用户输入
input_str = input("请输入成对的数字(空格分隔):")
# 分割字符串并转成整数列表
input_nums = list(map(int, input_str.split()))

# 用切片+zip实现两两配对:取偶数索引元素为键,奇数索引为值
key_value_pairs = zip(input_nums[::2], input_nums[1::2])

3. 填充到指定子字典

把键值对填充到目标主键的子字典里,注意要把整数键转成字符串(和原字典的键类型匹配):

target_main_key = '1'
for sub_key, value in key_value_pairs:
    a[target_main_key][str(sub_key)] = value

运行后,a['1']就会变成{'2': 2, '3': 5, '4': 1},完全符合你的要求!

为什么之前的for循环可能失败?

大概率是这两个原因:

  • 没正确处理两两分组:普通for循环遍历列表时,没按步长2取元素,无法得到正确的键值对组合
  • 键类型不匹配:原字典的子键是字符串(比如'2'),但输入转成整数后直接使用,会生成整数键,和原结构不兼容

进阶:动态指定主键

如果想让用户输入时先指定要填充的主键(比如输入"1 2 2 3 5 4 1",第一个数字1是主键),可以修改代码实现:

input_str = input("请输入主键+成对数字(空格分隔):")
input_nums = list(map(int, input_str.split()))

# 提取主键并转成字符串
target_main_key = str(input_nums[0])
# 剩余元素两两配对
key_value_pairs = zip(input_nums[1::2], input_nums[2::2])

# 若主键不存在,先初始化子字典
if target_main_key not in a:
    a[target_main_key] = {}

# 填充数据
for sub_key, value in key_value_pairs:
    a[target_main_key][str(sub_key)] = value

这样不管要填充哪个主键的子字典都能灵活处理啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:22:38