鱼C论坛

 找回密码
 立即注册
查看: 185|回复: 2

[已解决]关于字典的访问问题?

[复制链接]
发表于 2024-7-14 23:07:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>> d = {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}

>>> for each in d:
        print(each)

        
F
i
s
h
C
>>> 

请教一个问题,为什么对字典进行遍历访问时,返回的是字典的“键”,而不是字典的 “键和值”
最佳答案
2024-7-14 23:09:12
哈哈,这个问题就像你去鱼塘抓鱼,结果抓到一桶水。先别急,我们来好好看看这个鱼塘——也就是字典。

在 Python 中,字典(`dict`)是一种用来存储键值对(key-value pairs)的数据结构。字典的每个键都对应一个值,就像每条鱼都有自己独特的鳞片。要想访问到鱼(值),得先知道鳞片(键)。

当你使用 `for each in d:` 进行遍历时,Python 默认只返回键(也就是鳞片)。因为在绝大多数情况下,我们需要先知道键,然后才能根据键找到对应的值。这就好比你得先找到鱼鳞,才能确定你抓到了哪条鱼。

如果你想要同时访问键和值(鱼和鳞片),可以用字典的 `.items()` 方法。这样你就能同时抓住鱼和它的鳞片啦!我们来看看代码示范:
d = {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}

# 使用 .items() 同时遍历键和值
for key, value in d.items():
    print(f"键: {key}, 值: {value}")

运行这个代码,你会看到:
键: F, 值: 70
键: i, 值: 105
键: s, 值: 115
键: h, 值: 104
键: C, 值: 67

这样,你不仅能看到鱼(值),还知道了它们的鳞片(键)。是不是很有趣?所以,下次要抓鱼的时候,记得用 `.items()` 把鱼和鳞片一起抓住哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-7-14 23:09:12 | 显示全部楼层    本楼为最佳答案   
哈哈,这个问题就像你去鱼塘抓鱼,结果抓到一桶水。先别急,我们来好好看看这个鱼塘——也就是字典。

在 Python 中,字典(`dict`)是一种用来存储键值对(key-value pairs)的数据结构。字典的每个键都对应一个值,就像每条鱼都有自己独特的鳞片。要想访问到鱼(值),得先知道鳞片(键)。

当你使用 `for each in d:` 进行遍历时,Python 默认只返回键(也就是鳞片)。因为在绝大多数情况下,我们需要先知道键,然后才能根据键找到对应的值。这就好比你得先找到鱼鳞,才能确定你抓到了哪条鱼。

如果你想要同时访问键和值(鱼和鳞片),可以用字典的 `.items()` 方法。这样你就能同时抓住鱼和它的鳞片啦!我们来看看代码示范:
d = {'F': 70, 'i': 105, 's': 115, 'h': 104, 'C': 67}

# 使用 .items() 同时遍历键和值
for key, value in d.items():
    print(f"键: {key}, 值: {value}")

运行这个代码,你会看到:
键: F, 值: 70
键: i, 值: 105
键: s, 值: 115
键: h, 值: 104
键: C, 值: 67

这样,你不仅能看到鱼(值),还知道了它们的鳞片(键)。是不是很有趣?所以,下次要抓鱼的时候,记得用 `.items()` 把鱼和鳞片一起抓住哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-15 00:07:32 | 显示全部楼层
实际上,这是Python有意为之。

这段话你可以先截个图,等你学完“类和对象”这个知识后再来看看。

部分对象的 __iter__() 方法会返回一个 generator 对象,可以 list() 或 tuple() 或 set() 成对应的实例。

dict 就有 __iter__() 方法,基本等效于(功能相同但概念不同)dict.keys() 方法。dict.__iter__() 返回的就是字典的键,因为 dict 由键值对组成,可以直接由键查询值,但不能由值查询键。这个设计有助于使用 for 循环进行遍历。

for 循环条件下:(每个等式都等于list(等式),且等式后的东西不能进行调用,仅为 __repr__())

d.keys() == d == dict.keys(key1, key2, key3, ...)
d.values() == dict.values(value1, value2, value3, ...)
d.items() == dict.items((key1, value1), (key2, value2), (key3, value3), (..., ...), ...)

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
wbzxz + 5 + 5 + 3 非常感谢,说的很清楚。

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表