鱼C论坛

 找回密码
 立即注册
查看: 1245|回复: 4

[已解决]字典的创建问题

[复制链接]
发表于 2022-3-14 14:17:16 | 显示全部楼层 |阅读模式

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

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

x
>>> list(zip([1,2,3],[10,20,30]))
[(1, 10), (2, 20), (3, 30)]                       
>>> zip([1,2,3],[10,20,30])
<zip object at 0x00000289D4A55700>
>>> dict(zip([1,2,3],[10,20,30]))
{1: 10, 2: 20, 3: 30}                               #为什么这里可以直接zip而不需要加list
>>> dict(list(zip([1,2,3],[10,20,30])))
{1: 10, 2: 20, 3: 30}                               #这个我能理解,把第一行的list(zip([1,2,3],[10,20,30]))值——[(1, 10), (2, 20), (3, 30)]    带入就是一个创建字典的方法,但是为什么不加list也可以呢


为什么可以直接dict(zip([],[])),而不需要加list,不是说只能有一个对象吗(所以才会中间那层括号dict(([],[]))),但是不加list的话,还是一个对象吗
最佳答案
2022-3-14 15:21:46
本帖最后由 isdkz 于 2022-3-14 15:28 编辑
Jerry~Mouse 发表于 2022-3-14 15:18
所以归根结底 只需要是可迭代对象就可以了吗


嗯嗯,可迭代对象都可以,

还有就是这个可迭代对象要一次能迭代且只能迭代出包含两个元素的序列(这里你没看错,就是序列,包含字符串),你可以试试这个 :
test = dict(('ab',))
print(test)


而且迭代出的序列中第一个元素不能是可变对象或包含可变对象,因为可变对象不能做字典的键
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-14 14:30:40 | 显示全部楼层
本帖最后由 isdkz 于 2022-3-14 14:32 编辑

因为 dict 只需要接受一个可迭代对象,且每一次迭代都可以迭代出2个元素作为键和值,

zip 返回的是一个 zip 对象,zip 对象跟 列表 对象一样也是可迭代的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-14 15:18:19 | 显示全部楼层
isdkz 发表于 2022-3-14 14:30
因为 dict 只需要接受一个可迭代对象,且每一次迭代都可以迭代出2个元素作为键和值,

zip 返回的是一个  ...

所以归根结底 只需要是可迭代对象就可以了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-14 15:21:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-3-14 15:28 编辑
Jerry~Mouse 发表于 2022-3-14 15:18
所以归根结底 只需要是可迭代对象就可以了吗


嗯嗯,可迭代对象都可以,

还有就是这个可迭代对象要一次能迭代且只能迭代出包含两个元素的序列(这里你没看错,就是序列,包含字符串),你可以试试这个 :
test = dict(('ab',))
print(test)


而且迭代出的序列中第一个元素不能是可变对象或包含可变对象,因为可变对象不能做字典的键
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-14 15:37:12 | 显示全部楼层
isdkz 发表于 2022-3-14 15:21
嗯嗯,可迭代对象都可以,

还有就是这个可迭代对象要一次能迭代且只能迭代出包含两个元素的序列(这 ...

啊~原来如此 谢谢解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 01:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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