[入门-3] 基础类型之字典

Python的字典是可变hash实现的,类似perl中的关联数组

基本操作

#create 
adic = {}
bdic = {'name':'zdsfsf', 'port': 90, 'dfs':['fd', 2, 9.0]}
cdic = dict((['x', 1], ['y', 2]))
ddic = {}.fromkeys(('x','y'), -1) #默认是 None
fdic = {1:'fdsfg', '1':dsf, 8.2:9.2}  #都可以做key,只要是可hash的

#access
for key in adic.keys()
    (key, adic[key])
if key in adic:  #推荐
     adic[key]
if adic.has_key(key):
     adic[key]

#update=set,有则访问,无则创建
adic['name'] = 'fdsf'
adic['bbbb'] = 'asf'
print 'host %(name) is running on port %(port)' %adic

#delete
del adic['name']
adic.clear()
del adic
adic.pop('name')

映射类型操作符

#不支持拼接和重复 adic+bdic, adic*6 不支持,因为没有意义
#标准类型操作符
<
>
!=
#映射类型操作符
[]
in
not in

内建函数和工厂函数

type()
str()
cmp()

dict()
#1-传入可迭代对象,序列或迭代器,每个元素必须成对,第一个key,第二个是value
dict(zip(('x','y'), (1,2)))
dict([['x',1], ['y',2]])
dict([('xy'[i-1],i) for i in range(1,3)])

#2-传入字典对象,
dict(x=1,y=2)
anotherdic = dict(adic)
fdic = adic.copy()  #推荐使用

len(mapping)

hash(obj) 
#判断一个对象是否可以作为字典的key
#返回整型值,失败产生TypeError错误

映射类型内建方法

adic.keys()   #返回key的list
adic.values() #返回value的list
adic.items()  #返回(key,value)元组的list
adic.clear()  #清空字典里所有元素
adic.fromkeys(seq, value=None) #依据列表作为key,建立dic,值采用value,默认None
adic.get(key, default=None) #不存在的时候,返回default值,默认None
adic.has_key()
adic.iter()
adic.pop(key, default) #和get类似,只不过是删除然后返回
adic.setdefault(key, default=None) #不存在,就赋值default
adic.update(adic2) #将另一个字典的全部元素加到这个字典中,重复key则更新
adic.copy() #浅复制
sorted(adic) 

#为节省内存 Views?
adic.iterkeys()
adic.iteritems()
adic.itervalues()

字典的键

  • 任何类型都可以做为键,包括自定义类型,但必须是可hash的
  • 所有不可变的类型都是可哈希的,1和1.0哈希的值一样,是相同的键
  • 可变类型,比如一个类可以提供hash方法,返回整型值,也可以做键,比较特殊
  • 数字、字符串可以做键,对于元组来说,只有仅包括数字和字符串的元组可以做键
  • 不允许一个键对应多个值

Reference

Python核心编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值