鱼C论坛

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

[已解决]关于dict函数

[复制链接]
发表于 2018-5-16 12:13:19 | 显示全部楼层 |阅读模式

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

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

x
dict(((1,2),(3,4)))
{1: 2, 3: 4}
>>> dict((1,2))
Traceback (most recent call last):
  File "<pyshell#34>", line 1, in <module>
    dict((1,2))
TypeError: cannot convert dictionary update sequence element #0 to a sequence
为什么((1,2),(3,4))元组可以使用这个函数,(1,2)元组使用时会报错
最佳答案
2018-5-16 12:59:46
本帖最后由 ABC23 于 2018-5-16 13:01 编辑

创建一个非空dict一般认为有三种方法:

>>> d = {}
>>> d['a'] = 1
>>> d['b'] = 2
>>> d
{'a': 1, 'b': 2}

>>> a = 1
>>> a = 'a'
>>> b = 'b'
>>> d = dict(a=1, b =2)
>>> d
{'a': 1, 'b': 2}

>>> t = (('a', 1), ('b', 2))
>>> d = dict(t)
>>> d
{'a': 1, 'b': 2}

另外还有fromkeys、zip函数等。但是通常上面几种够用了。

看你的问题,出错在第三种构造dict的方法上。它传入的是一个序列而不是多个。类似于zip的感觉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-5-16 12:38:47 | 显示全部楼层
依据help(dict),字典赋值时,一定包含 key,value两部分。 dict((1,2))缺失value,无法匹配,因此报错

class dict(object)
|  dict() -> new empty dictionary
|  dict(mapping) -> new dictionary initialized from a mapping object's
|      (key, value) pairs
|  dict(iterable) -> new dictionary initialized as if via:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 12:39:40 | 显示全部楼层
dict函数不能直接将一个简单的元祖转换为字典
因为元祖本身不具备一一映射的关系,编译器如何知道哪个对哪个?哪个是键,哪个是值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 12:59:46 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ABC23 于 2018-5-16 13:01 编辑

创建一个非空dict一般认为有三种方法:

>>> d = {}
>>> d['a'] = 1
>>> d['b'] = 2
>>> d
{'a': 1, 'b': 2}

>>> a = 1
>>> a = 'a'
>>> b = 'b'
>>> d = dict(a=1, b =2)
>>> d
{'a': 1, 'b': 2}

>>> t = (('a', 1), ('b', 2))
>>> d = dict(t)
>>> d
{'a': 1, 'b': 2}

另外还有fromkeys、zip函数等。但是通常上面几种够用了。

看你的问题,出错在第三种构造dict的方法上。它传入的是一个序列而不是多个。类似于zip的感觉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2018-5-16 14:42:48 | 显示全部楼层
要想用(1,2)元组,需要写成:
  1. >>> dict(((1,2),))
  2. {1: 2}
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 10:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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