字典
常用列表操作字典使用注意事项创建字典的方法字典解析
字典
通过键而不是偏移量来读取任意对象的无序集合可变长,异构,任意嵌套属于可变的映射类型对象引用表(散列表即哈希表)
常用列表操作
操作解释备注
D = {}空字典D = {‘spam’:2,’eggs’:3}两项目字典D = {‘food’:{‘ham’:1,’egg’:2}}嵌套D = dict.fromkeys([‘a’,’b’])构造字典,键值为列表[‘a’,’b’]中的值D = dict.fromkeys([‘a’,’b’]) print D结果为{‘a’: None, ‘b’: None}D[‘egg’]D[‘egg’][‘ham’]以键作为索引运算‘eggs’ in D成员关系,存在测试D.keys()键D.values()值D.items键+值D.copy()副本D.get(key)获取键key的值,当key不存在时返回默认值NoneD.update(D2)组合d1 = {‘1’:’www’,’2’:’eee’} d2 = {‘3’:’ccc’,’4’:’vff’}d1.update(d2) print d1结果{‘1’: ‘www’, ‘3’: ‘ccc’, ‘2’: ‘eee’, ‘4’: ‘vff’}D.pop(key)返回键key的值,并删除len(D)长度D[key] = value新增/修改键set(D.keys())字典键集合set(D1.keys()) & set(D2.keys())D1和D2相同键列表d1 = {‘1’:’www’,’2’:’eee’}d2 = {‘3’:’ccc’,’4’:’vff’}d1.update(d2)print d1print set(d1.keys())print set(d1.keys()) & set(d2.keys())结果{‘1’: ‘www’, ‘3’: ‘ccc’, ‘2’: ‘eee’, ‘4’: ‘vff’}set([‘1’, ‘3’, ‘2’, ‘4’])set([‘3’, ‘4’])D={x:x*2 for x in range(10)}字典解析(python3.0)D={x:x*2 for x in range(10)}print D{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
字典使用注意事项
序列运算无效对新索引赋值会新增该项键不一定总是字符串(可以是整形、元组、类实例等)
d = {}
d[99] = "hell0"
用于稀疏数据结构
>>> Matrix ={}
>>> Matrix[(
2,
3,
4)] =
88
>>> Matrix[(
7,
8,
9)] =
99
>>> Matrix
{(
2,
3,
4):
88, (
7,
8,
9):
99}
>>> x=
2;y=
3;z=
4
>>> Matrix[(x,y,z)]
88
创建字典的方法
>>> {
'name':
'mel',
'age':
45}
{
'age':
45,
'name':
'mel'}
>>> D={}
>>> D[
'name'] =
'mel'
>>> D[
'age'] =
45
>>> D
{
'age':
45,
'name':
'mel'}
>>> dict(name=
'mel',age=
45)
{
'age':
45,
'name':
'mel'}
>>> dict([(
'name',
'mel'),(
'age',
45)])
{
'age':
45,
'name':
'mel'}
>>> dict.fromkeys([
'a',
'b'],
'lala')
{
'a':
'lala',
'b':
'lala'}
字典解析
>>> D={k:v
for (k,v)
in zip([
'a',
'b',
'c'],[
1,
2,
3])}
>>> D
{
'a':
1,
'c':
3,
'b':
2}
>>> D = {c.lower():c +
'!' for c
in [
'SPAM',
'ENGS',
'HAM']}
>>> D
{
'engs':
'ENGS!',
'ham':
'HAM!',
'spam':
'SPAM!'}