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

Python新手求助:如何将指定字典转为用户输入形式?

解决你的Python字典输入问题

嘿,我来帮你梳理下代码里的问题,然后给出修正后的版本~

首先,先明确你想要实现的目标字典:

referred_rankings_men = { 
    'ryan': ['lizzy', 'sarah', 'zoey', 'daniella'], 
    'josh': ['sarah', 'lizzy', 'daniella', 'zoey'], 
    'blake': ['sarah', 'daniella', 'zoey', 'lizzy'], 
    'connor': ['lizzy', 'sarah', 'zoey', 'daniella'] 
}

你的代码存在几个关键问题:

  • 没有提前初始化preferred_rankings_men空字典,直接给它的键赋值会触发NameError
  • lis1定义在所有循环外面,导致每个男人的偏好列表都会累加之前输入的所有女性,而不是独立的列表
  • 缺少输入提示,输入过程会比较混乱

修正后的代码

n = int(input("Enter the number of men: "))
# 初始化空字典存储结果
preferred_rankings_men = {}

for i in range(n):
    man = input(f"\nEnter the name of man {i+1}: ")
    # 每个男人对应一个全新的空列表,避免数据累加
    woman_preferences = []
    print(f"Please enter {man}'s preferred women in order (total {n} people):")
    for j in range(n):
        woman = input(f"Rank {j+1}: ")
        woman_preferences.append(woman)
    # 将当前男人的偏好列表存入字典
    preferred_rankings_men[man] = woman_preferences

# 打印最终生成的字典
print("\n=== Final Preferred Rankings ===")
print(preferred_rankings_men)

代码修正说明

  1. 初始化空字典:提前创建preferred_rankings_men = {},确保可以正常给键赋值,不会报错
  2. 独立的偏好列表:每次循环到新男人时,都重新创建woman_preferences空列表,这样每个男人的偏好都是独立的,不会互相干扰
  3. 友好的输入提示:添加了f-string格式的提示文本,让你清楚知道当前要输入谁的偏好、当前是第几顺位,输入体验更顺畅

输入示例

如果按照目标字典的内容输入,流程会是这样:

Enter the number of men: 4

Enter the name of man 1: ryan
Please enter ryan's preferred women in order (total 4 people):
Rank 1: lizzy
Rank 2: sarah
Rank 3: zoey
Rank 4: daniella

Enter the name of man 2: josh
Please enter josh's preferred women in order (total 4 people):
Rank 1: sarah
Rank 2: lizzy
Rank 3: daniella
Rank 4: zoey

...(继续输入blake和connor的偏好)

最终输出就会和你想要的目标字典结构完全一致啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:40:37