LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 682|回复: 4

python中有个方法不明白

[复制链接]
发表于 2005-5-19 22:49:36 | 显示全部楼层 |阅读模式
字典方法a.fromkeys(seq[, value])说明
Creates a new dictionary with keys from seq and values set to value
是什么意思?
产生的新dict和a有什么关系,试验了一下没看出来。
发表于 2005-5-20 10:51:36 | 显示全部楼层
将seq序列里的所有元素做为字典a的关键字,从而对字典a进行更新。如果提供了value值,则那些关键字所对应的值都为value。其中,seq可为string,list,tuple和dictionary等多种序列类型。命令行下如下所示:

>>> a={}
>>> seq=['t','k','s']           #seq为列表(list)
>>> a.fromkeys(seq)          #value值为空
{'s': None, 'k': None, 't': None}  #dictionary为无序序列
>>> seq=('t','k','s')            #seq为元组(tuple)
>>> a.fromkeys(seq)         #value值为空
{'s': None, 'k': None, 't': None}
>>> seq='abc'              #seq为字符串(string)
>>> a.fromkeys(seq)        # value值为空
{'a': None, 'c': None, 'b': None}
>>> a.fromkeys(seq,'kkkk')  #提供value
{'a': 'kkkk', 'c': 'kkkk', 'b': 'kkkk'}
>>> zz=[3,6]
>>> a.fromkeys(seq,zz)     # value为list
{'a': [3, 6], 'c': [3, 6], 'b': [3, 6]}
>>> p=a.fromkeys(seq,zz)     #字典赋值
>>> p
{'a': [3, 6], 'c': [3, 6], 'b': [3, 6]}
>>> a.fromkeys(seq,p)        # value 为字典(dictionary)
{'a': {'a': [3, 6], 'c': [3, 6], 'b': [3, 6]}, 'c': {'a': [3, 6], 'c': [3, 6], 'b': [3, 6]}, 'b': {'a': [3, 6], 'c': [3, 6], 'b': [3, 6]}}
>>>
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-20 12:10:32 | 显示全部楼层
谢谢楼上,楼上说:
将seq序列里的所有元素做为字典a的关键字,从而对字典a进行更新


对a更新吗??好像不是,应该产生新dict啊。
我的疑问
a.fromkeys(seq)对a的内容没有什么影响啊,只是产生的新字典,对于相同的seq,无论a原来是什么内容产生的新dict都和a的内容无关啊,所以这里不应该放什么a,直接
{}.fromkeys(seq)不是更清楚吗
不知我的理解对不对。
用python的人好像好少啊,大家都用python具体干什么
回复 支持 反对

使用道具 举报

发表于 2005-5-20 12:28:02 | 显示全部楼层
sorry! 我忘了查看一下a中的内容。
a确实不会改变。a.fromkeys(seq)产生新的字典,如果不赋值就可能无法使用。
可以用a=a.fromkeys(seq)对a进行更新,或者用b=a.fromkeys(seq)获得新的字典。

学Python主要是觉得有意思,没考虑应用;以后工作了也未必用得到。
希望有一天能做个俄罗斯方块出来,想来想去,还是觉得用Python最现实,最简单,呵呵...
回复 支持 反对

使用道具 举报

发表于 2005-5-20 12:32:02 | 显示全部楼层
{}.fromkeys(seq)当然也可以,但它只是a.fromkeys(seq[, value])的一个特例而已。a未必是一个空的字典。
回复 支持 反对

使用道具 举报

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

本版积分规则

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