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

Python字典items()方法遍历键值对的变量接收顺序相关疑问

字典items()遍历的变量顺序规则

Python字典的items()方法返回的是由(键, 值)元组组成的可迭代序列,元组内的元素顺序固定是键在前、值在后,和你定义的变量名完全无关,只按位置对应分配:

  • 你写for 变量1, 变量2 in 字典.items()时,变量1永远接收键,变量2永远接收值
  • 就算你把变量名改成a、b,也是第一个拿键,第二个拿值,变量名只是方便开发者理解的标识,没有语义绑定作用。

调换两个变量顺序的运行结果

如果把代码改成for user_info, username in users.items(),运行会直接报错:
此时user_info拿到的是原本的键(也就是字符串类型的aeinstein、mcurie),username拿到的是原本的值(嵌套的用户信息字典)。当你执行user_info['first']时,Python会尝试用字符串的下标取值,但字符串只能接受整数下标,会直接抛出TypeError: string indices must be integers类型错误。

额外提示:原代码的缩进问题

你贴的代码里最后两行print是在for循环的缩进外的,所以只会打印最后一个遍历到的mcurie的信息,不会打印aeinstein的。如果要输出所有用户的完整信息,需要把这两行print缩进,和for循环内的其他代码对齐:

for username, user_info in users.items():
    print(f"\nUsername: {username}")
    full_name = f"{user_info['first']} {user_info['last']}"
    location = user_info['location']
    # 以下两行缩进和循环内代码对齐
    print(f"\tFull name: {full_name.title()}")
    print(f"\tLocation: {location.title()}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:36:03