Python中的字典及举例

发布时间:2019-08-26 07:16:59编辑:auto阅读(1458)

    字典

    字典是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

        #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.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

        #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

        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

        #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

        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

        #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

        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

        #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

        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]#


    练习:

        1. 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码

        dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}

        1) 将该字典按照ASCII码的值排序

            print sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False)

        2) 有一个字母的ASCII错了,修改为正确的值,并重新排序

            dict1['o']=111

            print sorted(dict1.iteritems(), key=lambda d:d[1], reverse=False)

        2. 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)

            dict2 = dict(zip(string.uppercase,range(65,92)))

            print dict2

        3. 将dict2与第一题排序后的dict1合并成一个dict3

            dict3 = dict(dict1, **dict2)

            # dict3 = dict(dict1, **dict2)等同于下面的两行代码

            # dict3 = dict1.copy()

            # dict3.update(dict2)

            print dict3

            

关键字

上一篇: python云计算2

下一篇: 设置 Sublime Text 的 Py