字典

字典是python中的唯一的映射类型(哈希表)

字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值。

字典的方法

    keys()

    values()

    items()

举例如下:

        In [10]: dic = {}
    In [11]: type(dic)
    Out[11]: dict
    In [12]: dic = {'a':1,1:123}
    In [13]: dic
    Out[13]: {1: 123, 'a': 1}
    In [14]: dic = {'a':1,1:123,('a','b'):'hello'}
    In [15]: dic = {'a':1,1:123,('a','b'):'hello',[1]:1}
    ---------------------------------------------------------------------------
    TypeError                                 Traceback (most recent call last)
    <ipython-input-15-4fc52e86cb96> in <module>()
    ----> 1 dic = {'a':1,1:123,('a','b'):'hello',[1]:1}
    TypeError: unhashable type: 'list'
    In [16]: len(dic)
    Out[16]: 3
    In [17]: dic.keys()
    Out[17]: ['a', 1, ('a', 'b')]
    In [18]: dic.values()
    Out[18]: [1, 123, 'hello']
    In [19]: dic.get('a')
    Out[19]: 1
    In [20]: dic
    Out[20]: {1: 123, 'a': 1, ('a', 'b'): 'hello'}
    In [21]: dic[1]
    Out[21]: 123

更改字典内value:

    In [22]: dic['a'] = 2
    In [23]: dic
    Out[23]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}

查看是不是在字典里

       In [28]: 'b' in dic
    Out[28]: False
    In [29]: 'a' in dic
    Out[29]: True
    In [30]: dic.has_key('a')
    Out[30]: True
    In [31]: dic.has_key('b')
    Out[31]: False

变为列表:

      In [32]: dic.items()
    Out[32]: [('a', 2), (1, 123), (('a', 'b'), 'hello')]
    In [33]: dic
    Out[33]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}

复制字典:

       In [34]: dic1 = dic.copy()
    In [35]: dic1
    Out[35]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}
    In [36]: dic
    Out[36]: {1: 123, 'a': 2, ('a', 'b'): 'hello'}

删除字典内容:

       In [37]: dic.pop(1)
    Out[37]: 123
    In [38]: dic
    Out[38]: {'a': 2, ('a', 'b'): 'hello'}
    In [39]: dic.pop(2)
    ---------------------------------------------------------------------------
    KeyError                                  Traceback (most recent call last)
    <ipython-input-39-9f97239cddce> in <module>()
    ----> 1 dic.pop(2)
    KeyError: 2
    In [40]:

更新字典,两个字典更新为一个:

       In [40]: dic1 = {1:1,2:2}
    In [41]: dic.update(dic1)
    In [42]: dic1
    Out[42]: {1: 1, 2: 2}
    In [43]: dic
    Out[43]: {1: 1, 2: 2, 'a': 2, ('a', 'b'): 'hello'}

创建字典:

       dic = {}
    dic = dict()
    help(dict)
    dict((['a',1],['b',2]))
    dict(a=1,b=2)
    fromkeys(),字典元素有相同的值时,默认为None.
    ddict = {}.formkeys(('x','y'),100)
    dic.fromkeys(range(100),100)
    In [45]: dic.fromkeys('abc')
    Out[45]: {'a': None, 'b': None, 'c': None}
    In [42]: dic = {}
    In [43]: dic
    Out[43]: {}
    In [44]: dict()
    Out[44]: {}
    In [45]: dict(x=10,y=100)
    Out[45]: {'x': 10, 'y': 100}
    In [46]: dict([('a',10),('b',20)])
    Out[46]: {'a': 10, 'b': 20}

访问字典:

        In [10]: dic={1:1,2:3,3:5}
    In [11]: dic
    Out[11]: {1: 1, 2: 3, 3: 5}
    In [12]: dic[2]
    Out[12]: 3
    In [13]: dic.items()
    Out[13]: [(1, 1), (2, 3), (3, 5)]

for循环访问:

        In [15]: for i in dic:
    ....:     print i,dic[i]
    ....:
    1 1
    2 3
    3 5
     In [18]: for i in dic:
    ....:     print "%s,%s" % (i,dic[i])
    ....:
    1,1
    2,3
    3,5
    In [19]: dic
    Out[19]: {1: 1, 2: 3, 3: 5}
    In [19]: dic
    Out[19]: {1: 1, 2: 3, 3: 5}
    In [21]: for k,v in dic.items():print k,v
    1 1
    2 3
    3 5

字典练习

    写出脚本,根据提示输入内容,并输入到字典中。

1种:
       [root@localhost python]# cat dict.py
    #!/usr/bin/python
    #Author is fengXiaQing
    #date 2017.12.22
    info = {}
    name = raw_input("Please input name:")
    age = raw_input("Please input age:")
    gender = raw_input("Please input (M/F):")
    info['name'] = name
    info['age'] = age
    info['gender'] = gender
    print info
    [root@localhost python]#
    [root@localhost python]# python dict.py
    Please input name:fxq
    Please input age:20
    Please input (M/F):M
    {'gender': 'M', 'age': '20', 'name': 'fxq'}
    [root@localhost python]#
2.种
    #!/usr/bin/python
    #Author is fengXiaQing
    
    info = {}
    name = raw_input("Please input name:")
    age = raw_input("Please input age:")
    gender = raw_input("Please input (M/F):")
    info['name'] = name
    info['age'] = age
    info['gender'] = gender
    print info.items()
    [root@localhost python]# python dict.py
    Please input name:fxq
    Please input age:22
    Please input (M/F):M
    [('gender', 'M'), ('age', '22'), ('name', 'fxq')]
    [root@localhost python]#
3.种
    #!/usr/bin/python
    #Author is fengXiaQing

    info = {}
    name = raw_input("Please input name:")
    age = raw_input("Please input age:")
    gender = raw_input("Please input (M/F):")
    info['name'] = name
    info['age'] = age
    info['gender'] = gender
    for i in info.items():
        print i
    print "main end"
    [root@localhost python]# python dict.py
    Please input name:fxq
    Please input age:22
    Please input (M/F):M
    ('gender', 'M')
    ('age', '22')
    ('name', 'fxq')
    main end
    [root@localhost python]#
4.种
    #!/usr/bin/python
    #Author is fengXiaQing
 
    info = {}
    name = raw_input("Please input name:")
    age = raw_input("Please input age:")
    gender = raw_input("Please input (M/F):")
    info['name'] = name
    info['age'] = age
    info['gender'] = gender
    for k,v in info.items():
        print k,v
    print "main end"
    [root@localhost python]# python dict.py
    Please input name:fxq
    Please input age:22
    Please input (M/F):M
    gender M
    age 22
    name fxq
    main end
    [root@localhost python]#
5.种
    #!/usr/bin/python
    #Author is fengXiaQing
  
    info = {}
    name = raw_input("Please input name:")
    age = raw_input("Please input age:")
    gender = raw_input("Please input (M/F):")
    info['name'] = name
    info['age'] = age
    info['gender'] = gender
    for k,v in info.items():
        print "%s:%s" % (k,v)
    print "main end"
    [root@localhost python]# python dict.py
    Please input name:fxq
    Please input age:22    
    Please input (M/F):M
    gender:M
    age:22
    name:fxq
    main end
    [root@localhost python]#
6.种
    #!/usr/bin/python
    #Author is fengXiaQing
    
    info = {}
    name = raw_input("Please input name:")
    age = raw_input("Please input age:")
    gender = raw_input("Please input (M/F):")
    info['name'] = name
    info['age'] = age
    info['gender'] = gender
    for k,v in info.items():
        print "%s" % k
    print "main end"
    [root@localhost python]# python dict.py
    Please input name:fxq
    Please input age:22
    Please input (M/F):M
    gender
    age
    name
    main end
    [root@localhost python]#