您的位置:首页 > 理论基础 > 数据结构算法

week03_python内置数据结构_字典

2018-08-18 13:19 991 查看
字典dict

key-value键值对的数据的集合

可变的、无序的、key不重复

字典dict定义 初始化
d = dict() 或者 d = {}
dict(**kwargs) 使用name=value对初始化一个字典
dict(iterable, **kwargs) 使用可迭代对象和name=value对构造字典,不过可迭代对象的元素必须是一个二元结构;
d = dict(((1,'a'),(2,'b'))))
d1 = dict(([1,'a'],[2,'b']))

dict(mapping, **kwargs)使用一个字典构建另一个字典
d2 = {'a':10, 'b':20, 'c':None, 'd':[1, 2, 3]}

类方法dict.fromkeys(iterable, value)
d3 = dict.fromkeys(range(5))
d4 = dict.fromkeys(range(5), 0)
字典元素的访问

d[key]
返回key对应的值value
key不存在抛出KeyError异常

get(key[,default])
返回key对应的值value
key不存在返回缺省值,如果没有设置缺省值就返回None

setdefault(key[,default])
返回key对应的值value
key不存在,添加kv对,value为default,并返回default,如果default没有设置,缺省为None
字典增加和修改

d[key] = value
将key对应的值修改为value
key不存在,则添加新的kv对

update([other]) -> None
使用另一个字典的kv对更新本字典;
key不存在,就添加;
key存在,覆盖已存在的key对应的值
就地修改
字典删除

pop(key[,default])
key存在,移除它,并返回它的value
key不存在,返回给定的default
default未设置,key不存在则抛出KeyError异常

popitem()
移除并返回一个任意键值对
字典为empty,抛出KeyError异常

clear()
清空字典

del语句
a = True
b = [6]
d = {'a': 1, 'b': b, 'c': [1, 3, 5]}
del a
print(a)

del d['c'] # 看着像删除了一个对象,本质上减少了一个对象的引用,del实际上删除的是名称,而不是对象;
print(d)


字典遍历
for ... in dict
遍历key:
for k in dict:
print(k)

for k in dict.keys():
print(k)

遍历value:
for k in d:
print(d[k])

for k in d.keys():
print(d.get(k))

遍历item,即kv对
for item in d.items():
print(item)

for k, v in d.items():
print(k, v)

总结:
python3中,keys、values、items方法返回一个类似一个生成器的可迭代对象,
不会把函数的返回结果复制到内存中;
python2中,上面的方法会返回一个新的列表,占据新的内存空间,
所以python2建议使用iterkeys、itervalues、iteritems版本,
返回一个迭代器,而不是一个copy


字典的key
key的要求和set的元素要求一致
hashable可哈希才可以作为key
d = {1: 0, 2.0: 3, "abc": None, ('hello','world','python'): "string", b'abc': '135'}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dict 内置 数据