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

Python字典操作问询:如何正确输出name对应的uid字段值

问题排查与代码修正:打印字典中每个name对应的uid字段

我看了你的代码,这里有几个小问题导致无法实现预期功能,咱们一个个来理清楚:

1. 字典赋值的语法错误

在给std[name]赋值时,'subject'后面少了冒号,字典的键值对必须遵循键: 值的格式,所以这里要改成'subject': {'math':math,'phy':phy,'chem':chem}。

2. 键名大小写不匹配

你在字典里定义的uid键是'Uid'(首字母大写),但后面访问的时候用的是'uid'(全小写)——Python的字典键是严格区分大小写的,这会直接抛出KeyError。建议统一用小写的'uid'来保持一致性。

3. 最后打印的逻辑错误

print(std['name']['uid'])里的'name'是字符串字面量,但你的字典里的键是用户输入的真实名字(比如输入"Alice",键就是"Alice"),不是固定的'name'。而且你需要列出所有name对应的uid,所以应该遍历字典的键值对来批量打印。

另外提一句:如果你用的是Python3,raw_input()要换成input(),因为Python3里已经没有raw_input这个函数啦。

修正后的完整代码

std = {}
n = int(input("How many Entries you have to fill:"))  # Python3用input,Python2可换回raw_input
for i in range(n):
    name = input("Enter name:")
    uid = input("ID:")
    age = input("Age:")
    print("----Marks----")
    math = input("Maths:")
    phy = input("Physics:")
    chem = input("Chemistry:")
    # 修正语法错误和键名大小写
    std[name] = {'uid': uid, 'age': age, 'subject': {'math': math, 'phy': phy, 'chem': chem}}
    print('\n')

# 遍历字典,打印每个name对应的uid
print("List of names and their UIDs:")
for name, details in std.items():
    print(f"Name: {name}, UID: {details['uid']}")  # Python2可改成"Name: %s, UID: %s" % (name, details['uid'])

运行说明

  • 运行后输入条目数量,然后依次输入每个学生的信息即可。
  • 最后会自动列出所有学生的名字和对应的UID,完全符合你的预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:44:30