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)
代码修正说明
- 初始化空字典:提前创建
preferred_rankings_men = {},确保可以正常给键赋值,不会报错 - 独立的偏好列表:每次循环到新男人时,都重新创建
woman_preferences空列表,这样每个男人的偏好都是独立的,不会互相干扰 - 友好的输入提示:添加了
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
相关产品推荐
相关产品推荐

