zoukankan      html  css  js  c++  java
  • Python内置数据结构----字典

    介绍

    字典是由key-value键值对组成的可变的、无序的、key不重复的数据集

    键的类型:可以是整数和任何不可变的类型,也可以是非整数。如浮点数、字符串或元组。

    字典的定义和初始化

    dict()

    In [12]: d1=dict()
    
    In [13]: d={}
    
    In [14]: print(type(d))
    <class 'dict'>
    In [22]: d={'a':1,'b':2,'c':None,'d':[1,2]}
    
    In [23]: d
    Out[23]: {'a': 1, 'b': 2, 'c': None, 'd': [1, 2]}

    dict(**kwargs)

    In [16]: dict(a=1)
    Out[16]: {'a': 1}
    
    In [17]: dict(a=1,b=['abc'])
    Out[17]: {'a': 1, 'b': ['abc']}

    dict(iterable,**kwargs)  可迭代对象必须是二元结构

    In [6]: d=(("name",'tom'),('age',18))
    
    In [7]:  dict(enumerate(range(5)))
    Out[7]: {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
    
    In [8]:  d=dict((('a',1),))
    
    In [9]: d
    Out[9]: {'a': 1}
    
    In [10]: item=(("name",'tom'),('age',18))
    
    In [11]: d=dict(item)
    
    In [12]: d
    Out[12]: {'age': 18, 'name': 'tom'}

    字典的方法

    类方法----dict.fromkeys(iterable,value)

    In [7]: dict.fromkeys(range(3))
    Out[7]: {0: None, 1: None, 2: None}
    
    In [8]: dict.fromkeys(range(3),('a',))
    Out[8]: {0: ('a',), 1: ('a',), 2: ('a',)}
    
    In [9]: dict.fromkeys(range(3),['a','b'])
    Out[9]: {0: ['a', 'b'], 1: ['a', 'b'], 2: ['a', 'b']}
    
    In [10]: dict.fromkeys((1,),['a','b'])
    Out[10]: {1: ['a', 'b']}
    
    In [12]: {}.fromkeys('name','tom')
    Out[12]: {'a': 'tom', 'e': 'tom', 'm': 'tom', 'n': 'tom'}
    
    In [13]: {}.fromkeys(['name'],'tom')
    Out[13]: {'name': 'tom'}
    
    In [14]: {}.fromkeys([1],'tom')
    Out[14]: {1: 'tom'}

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

    In [13]: d
    Out[13]: {'age': 18, 'name': 'tom'}
    
    In [14]: d.get('name')
    Out[14]: 'tom'
    
    In [16]: d.get('sex','male')
    Out[16]: 'male'

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

    In [17]: d
    Out[17]: {'age': 18, 'name': 'tom'}
    
    In [18]: d.setdefault('sex','male')
    Out[18]: 'male'
    
    In [19]: d
    Out[19]: {'age': 18, 'name': 'tom', 'sex': 'male'}
    
    In [20]: d.setdefault('class')
    
    In [21]: d
    Out[21]: {'age': 18, 'class': None, 'name': 'tom', 'sex': 'male'}

    update([other])  使用other字典对本字典做更新,key不存在就添加,key存在就覆盖已有的key对应的值,就地修改,返回值None

    In [1]: d={'age': 18, 'name': 'tom', 'sex': 'male'}
    
    In [2]: d1={4:400}
    
    In [4]: d.update(d1,color='red')
    
    In [5]: d
    Out[5]: {4: 400, 'age': 18, 'color': 'red', 'name': 'tom', 'sex': 'male'}

    clear() 清空字典,就地修改,返回值None

    In [79]: d.clear()
    
    In [80]: d
    Out[80]: {}

    pop(key[,default]) 从字典中删除key,key存在就返回value,否则返回default。如果为设定default,返回keyerror

    In [32]: d=dict.fromkeys(range(10),[1,2,3])
    
    In [33]: d
    Out[33]:
    {0: [1, 2, 3],
     1: [1, 2, 3],
     2: [1, 2, 3],
     3: [1, 2, 3],
     4: [1, 2, 3],
     5: [1, 2, 3],
     6: [1, 2, 3],
     7: [1, 2, 3],
     8: [1, 2, 3],
     9: [1, 2, 3]}
    
    
    In [35]: d.pop(1)
    Out[35]: [1, 2, 3]
    
    In [36]: d
    Out[36]:
    {0: [1, 2, 3],
     2: [1, 2, 3],
     3: [1, 2, 3],
     4: [1, 2, 3],
     5: [1, 2, 3],
     6: [1, 2, 3],
     7: [1, 2, 3],
     8: [1, 2, 3],
     9: [1, 2, 3]}

    pop方法返回值是引用类型的时候,对其作出修改要注意

    In [38]: lst=d.pop(9)
    
    In [39]: lst
    Out[39]: [1, 2, 3]
    
    In [40]: lst.append(4)
    
    In [41]: d
    Out[41]:
    {0: [1, 2, 3, 4],
     2: [1, 2, 3, 4],
     3: [1, 2, 3, 4],
     4: [1, 2, 3, 4],
     5: [1, 2, 3, 4],
     6: [1, 2, 3, 4],
     7: [1, 2, 3, 4],
     8: [1, 2, 3, 4]}

    popitem()移除一个键值对,返回item

    In [49]: d1
    Out[49]: {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}
    
    In [50]: d1.popitem()
    Out[50]: (0, 0)
    
    In [51]: d1.popitem()
    Out[51]: (1, 1)
    
    In [52]: d1.popitem()
    Out[52]: (2, 2)
    
    In [53]: d1.popitem()
    Out[53]: (3, 3)
    
    In [54]: d1.popitem()
    Out[54]: (4, 4)

    keys()返回字典中key的视图,一定是不重复的值

    In [63]: d
    Out[63]: {'age': 18, 'name': 'tom', 'sex': 'male'}
    
    In [64]: d.keys()
    Out[64]: dict_keys(['sex', 'age', 'name'])

    values()返回字典中values的视图,可能有重复值

    In [67]: d
    Out[67]: {'age': 18, 'name': 'tom', 'sex': 'male'}
    
    In [68]: d.values()
    Out[68]: dict_values(['male', 18, 'tom'])

    items()返回字典项的列表,每个元素都是一个(key,value)的元组

    In [73]: d
    Out[73]: {'age': 18, 'name': 'tom', 'sex': 'male'}
    
    In [74]: d.items()
    Out[74]: dict_items([('sex', 'male'), ('age', 18), ('name', 'tom')])

    字典的遍历

    遍历key

    In [59]: d={'age': 18, 'name': 'tom', 'sex': 'male'}
    
    In [60]: for k in d:
        ...:     print(k)
        ...:
    sex
    age
    name
    
    In [62]: for k in d.keys():
        ...:     print(k)
        ...:
    sex
    age
    name

    遍历value

    In [70]: for k in d:
        ...:     print(d.get(k))
        ...:
    male
    18
    tom
    
    In [71]: for k in d.keys():
        ...:     print(d.get(k))
        ...:
    male
    18
    tom

    遍历items

    In [76]: for k,v in d.items():
        ...:     print(k,v)
        ...:
    sex male
    age 18
    name tom
    
    In [77]: for k,_ in d.items():
        ...:     print(k)
        ...:
    sex
    age
    name
    
    In [78]: for _,v in d.items():
        ...:     print(v)
        ...:
        ...:
    male
    18
    tom

    映射字典(很有用)

    In [81]: d={'age': 18, 'name': 'tom', 'sex': 'male'}
    
    In [82]: "Tom's sex is {sex}".format_map(d)
    Out[82]: "Tom's sex is male"

     

  • 相关阅读:
    XCode4.5.6,iOS6.1下测试 判断当前设备,及其联网状态等; 关于设备插上后XCode检测不出的情况的说明
    CentOS6.3上搭建expect无交互开发环境
    CentOS6.3上安装与配置nginx+php+mysql环境
    RabbitMQ的安装与配置
    linux下用python搭建简单的httpServer
    Linux下NFS的搭建与配置
    Linux下chkconfig命令介绍
    向python文件传递参数
    数据库热备份工具innobackupex的安装
    linux yum下载RPM包后再安装LAMP环境
  • 原文地址:https://www.cnblogs.com/zh-dream/p/13682373.html
Copyright © 2011-2022 走看看