python基础5-字典

系统 1386 0

python基础5-字典

python基础5-字典_第1张图片

数据类型

字典

字典定义、创建

字典是一种可变容器类型,且可以存储任意类型对象。字典和列表的最大的区别是字典强调的是“键值对”,key与value一一对应,字典中的存放顺序并不重要,重要的是“键”和“值”的对应关系。在字典中,要求key是唯一的,且不可变的。所以字典的特点如下:

  • 查找速度快
  • key-value序对没有顺序
  • key键不可变且唯一

字典的创建,使用 {} ,每个键值对用 : 隔开,每对之间用 , 分割。还有使用dict和使用fromkeys的方法

            
              
                >>
              
              
                >
              
               d1 
              
                =
              
              
                {
              
              
                'key'
              
              
                :
              
              
                'value'
              
              
                }
              
              
                # 使用dict()初始化字典,其中键必须是字符串
              
              
                >>
              
              
                >
              
               d2 
              
                =
              
              
                dict
              
              
                (
              
              key
              
                =
              
              
                'value'
              
              
                )
              
              
                # 使用dict创建时,下面的情况会出现bug
              
              
                >>
              
              
                >
              
               key 
              
                =
              
              
                'name'
              
              
                >>
              
              
                >
              
               d3 
              
                =
              
              
                dict
              
              
                (
              
              key
              
                =
              
              
                'value'
              
              
                )
              
              
                # 这个代码,原本我们是想输出{'name':'value'},可以结果并不一样,所以使用dict初始化的时候需要注意
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              d3
              
                )
              
              
                {
              
              
                'key'
              
              
                :
              
              
                'value'
              
              
                }
              
              
                # 使用fromkeys方法初始化字典
              
              
                #初始化
              
              
                >>
              
              
                >
              
               d4 
              
                =
              
              
                {
              
              
                }
              
              
                .
              
              fromkeys
              
                (
              
              
                [
              
              
                'key1'
              
              
                ,
              
              
                'key2'
              
              
                ]
              
              
                )
              
              
                >>
              
              
                >
              
               d4

              
                {
              
              
                'key1'
              
              
                :
              
              
                None
              
              
                ,
              
              
                'key2'
              
              
                :
              
              
                None
              
              
                }
              
              
                >>
              
              
                >
              
               d5 
              
                =
              
              
                dict
              
              
                (
              
              
                )
              
              
                .
              
              fromkeys
              
                (
              
              
                [
              
              
                'key1'
              
              
                ,
              
              
                'key2'
              
              
                ]
              
              
                )
              
              
                >>
              
              
                >
              
               d5

              
                {
              
              
                'key1'
              
              
                :
              
              
                None
              
              
                ,
              
              
                'key2'
              
              
                :
              
              
                None
              
              
                }
              
              
                # 初始化并赋值
              
              
                >>
              
              
                >
              
               d6 
              
                =
              
              
                {
              
              
                }
              
              
                .
              
              fromkeys
              
                (
              
              
                [
              
              
                'key1'
              
              
                ,
              
              
                'key2'
              
              
                ]
              
              
                ,
              
              
                'value'
              
              
                )
              
              
                >>
              
              
                >
              
               d6

              
                {
              
              
                'key1'
              
              
                :
              
              
                'value'
              
              
                ,
              
              
                'key2'
              
              
                :
              
              
                'value'
              
              
                }
              
              
                # 也可以先初始化,然后动态地添加
              
              
                >>
              
               d7 
              
                =
              
              
                {
              
              
                }
              
              
                >>
              
              
                >
              
               d7
              
                [
              
              
                'key1'
              
              
                ]
              
              
                =
              
              
                'value1'
              
              
                >>
              
              
                >
              
               d7
              
                [
              
              
                'key2'
              
              
                ]
              
              
                =
              
              
                'value2'
              
              
                >>
              
              
                >
              
               d7

              
                {
              
              
                'key1'
              
              
                :
              
              
                'value1'
              
              
                ,
              
              
                'key2'
              
              
                :
              
              
                'value2'
              
              
                }
              
              
                # 使用zip函数把键列表和值列表打包成键值对一一对应的元组
              
              
                >>
              
              
                >
              
               d8 
              
                =
              
              
                dict
              
              
                (
              
              
                zip
              
              
                (
              
              
                [
              
              
                'key1'
              
              
                ,
              
              
                'key2'
              
              
                ]
              
              
                ,
              
              
                [
              
              
                'value1'
              
              
                ,
              
              
                'value2'
              
              
                ]
              
              
                )
              
              
                )
              
              
                >>
              
              
                >
              
               d8

              
                {
              
              
                'key1'
              
              
                :
              
              
                'value1'
              
              
                ,
              
              
                'key2'
              
              
                :
              
              
                'value2'
              
              
                }
              
              
                # 字典推导表达式
              
              
                >>
              
              
                >
              
               d9 
              
                =
              
              
                {
              
              x
              
                :
              
              x
              
                **
              
              
                2
              
              
                for
              
               x 
              
                in
              
              
                [
              
              
                1
              
              
                ,
              
              
                2
              
              
                ,
              
              
                3
              
              
                ]
              
              
                }
              
              
                >>
              
              
                >
              
               d9

              
                {
              
              
                1
              
              
                :
              
              
                1
              
              
                ,
              
              
                2
              
              
                :
              
              
                4
              
              
                ,
              
              
                3
              
              
                :
              
              
                9
              
              
                }
              
            
          

访问、修改字典

字典和列表一样,是一种存储数据的容器;在列表中,可以通过下标索引来访问元素,在字典中通过键来访问它的对应值,即key:value;可以修改,添加等操作。

            
              
                >>
              
              
                >
              
               d1 
              
                =
              
              
                {
              
              
                'type'
              
              
                :
              
              
                'dict'
              
              
                ,
              
              
                'code'
              
              
                :
              
              
                'python'
              
              
                }
              
              
                # 值访问
              
              
                >>
              
              
                >
              
               d1
              
                [
              
              
                'type'
              
              
                ]
              
              
                'dict'
              
              
                # 内容添加
              
              
                >>
              
              
                >
              
               d1
              
                [
              
              
                1
              
              
                ]
              
              
                =
              
              
                2
              
              
                >>
              
              
                >
              
               d1

              
                {
              
              
                'type'
              
              
                :
              
              
                'dict'
              
              
                ,
              
              
                'code'
              
              
                :
              
              
                'python'
              
              
                ,
              
              
                1
              
              
                :
              
              
                2
              
              
                }
              
              
                # 内容修改
              
              
                >>
              
              
                >
              
               d1
              
                [
              
              
                'code'
              
              
                ]
              
              
                =
              
              
                'java'
              
              
                >>
              
              
                >
              
               d1

              
                {
              
              
                'type'
              
              
                :
              
              
                'dict'
              
              
                ,
              
              
                'code'
              
              
                :
              
              
                'java'
              
              
                ,
              
              
                1
              
              
                :
              
              
                2
              
              
                }
              
              
                # 删除元素,还可以是用del删除某个字典的key,或者删除整个字典;使用clear() 清空这个字典
              
              
                >>
              
              
                >
              
               d1 
              
                =
              
              
                {
              
              
                'type'
              
              
                :
              
              
                'dict'
              
              
                ,
              
              
                'code'
              
              
                :
              
              
                'python'
              
              
                ,
              
              
                1
              
              
                :
              
              
                2
              
              
                }
              
              
                >>
              
              
                >
              
               d1
              
                .
              
              pop
              
                (
              
              
                'code'
              
              
                )
              
              
                # d1的值为{'type': 'dict', 1: 2}
              
              
                >>
              
              
                >
              
              
                del
              
               d1
              
                [
              
              
                1
              
              
                ]
              
              
                # d1的值为{'type': 'dict'}
              
              
                >>
              
              
                >
              
               d1
              
                .
              
              clear
              
                (
              
              
                )
              
              
                # d1 = {}
              
              
                >>
              
              
                >
              
              
                del
              
               d1

              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              d1
              
                )
              
              
                # NameError: name 'd1' is not defined
              
              
                # 如果有两个字典,可以使用update函数来更新其中某一个字典
              
              
                # 从下面代码的结果上可以看出,如果d1中没有d2的元素,则添加进来;如果有,则修改为d2中的值
              
              
                >>
              
              
                >
              
               d2 
              
                =
              
              
                {
              
              
                1
              
              
                :
              
              
                3
              
              
                ,
              
              
                2
              
              
                :
              
              
                4
              
              
                ,
              
              
                5
              
              
                :
              
              
                6
              
              
                }
              
              
                >>
              
              
                >
              
               d1
              
                .
              
              update
              
                (
              
              d2
              
                )
              
              
                >>
              
              
                >
              
               d1

              
                {
              
              
                'type'
              
              
                :
              
              
                'dict'
              
              
                ,
              
              
                1
              
              
                :
              
              
                3
              
              
                ,
              
              
                2
              
              
                :
              
              
                4
              
              
                ,
              
              
                5
              
              
                :
              
              
                6
              
              
                }
              
            
          

字典的遍历

            
              d 
              
                =
              
              
                {
              
              
                'a'
              
              
                :
              
              
                1
              
              
                ,
              
              
                'b'
              
              
                :
              
              
                2
              
              
                ,
              
              
                'c'
              
              
                :
              
              
                3
              
              
                }
              
              
                # 遍历key值
              
              
                for
              
               key 
              
                in
              
               d
              
                :
              
              
                print
              
              
                (
              
              
                "{} : {}"
              
              
                .
              
              
                format
              
              
                (
              
              key
              
                ,
              
               d
              
                [
              
              key
              
                ]
              
              
                )
              
              
                )
              
              
                # 该方法和上面的方法是等价的
              
              
                for
              
               key 
              
                in
              
               d
              
                .
              
              keys
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "{} : {}"
              
              
                .
              
              
                format
              
              
                (
              
              key
              
                ,
              
               d
              
                [
              
              key
              
                ]
              
              
                )
              
              
                )
              
              
                # 遍历value值
              
              
                for
              
               value 
              
                in
              
               d
              
                .
              
              values
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              value
              
                )
              
              
                # 遍历字典项
              
              
                for
              
               key_value 
              
                in
              
               d
              
                .
              
              items
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              key_value
              
                )
              
              
                # 遍历字典健值
              
              
                for
              
               key
              
                ,
              
              value 
              
                in
              
               d
              
                .
              
              items
              
                (
              
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              
                "{} : {}"
              
              
                .
              
              
                format
              
              
                (
              
              key
              
                ,
              
               value
              
                )
              
              
                )
              
            
          

字典的排序

字典的排序有两种方法,第一种是 list()函数和字典的keys()方法相结合,对产生的list排序,然后输出。第二种方法是使用内置函数sorted()进行排序,会返回排序好的键。

            
              
                # 使用list()函数,和keys()相结合
              
              
d 
              
                =
              
              
                {
              
              
                1
              
              
                :
              
              
                2
              
              
                ,
              
              
                7
              
              
                :
              
              
                8
              
              
                ,
              
              
                3
              
              
                :
              
              
                4
              
              
                ,
              
              
                5
              
              
                :
              
              
                6
              
              
                }
              
              
d_key 
              
                =
              
              
                list
              
              
                (
              
              d
              
                .
              
              keys
              
                (
              
              
                )
              
              
                )
              
              
d_key
              
                .
              
              sort
              
                (
              
              
                )
              
              
                for
              
               key 
              
                in
              
               d_key
              
                :
              
              
                print
              
              
                (
              
              key
              
                ,
              
               d
              
                [
              
              key
              
                ]
              
              
                )
              
              
                # 使用sorted函数
              
              
                for
              
               key 
              
                in
              
              
                sorted
              
              
                (
              
              d
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              key
              
                ,
              
               d
              
                [
              
              key
              
                ]
              
              
                )
              
            
          

判断键值是否存在

在python2中判断一个字典中某个key是否存在可以使用has_key和in两种方法,但是在python3中只有in方法,

            
              
                >>
              
              
                >
              
               d 
              
                =
              
              
                {
              
              
                'type'
              
              
                :
              
              
                'dict'
              
              
                ,
              
              
                'code'
              
              
                :
              
              
                'java'
              
              
                ,
              
              
                1
              
              
                :
              
              
                2
              
              
                }
              
              
                >>
              
              
                >
              
              
                'code'
              
              
                in
              
               d

              
                True
              
              
                >>
              
              
                >
              
              
                3
              
              
                in
              
               d

              
                False
              
            
          

字典中get()方法

有这样一种情况,我们想获取字典中的某一个值,但是有不确定它是否存在,那么如果直接写 dict[key] 肯定是不妥当的,那么只能是先判读,然后在输出。这样写是可以的,但是在python中提供了一种方法 get(key, default=None) ,即若果存在直接输出结果,如果不存在,则输出为default的值。

            
              
                # 获取字典中的值
              
              
d 
              
                =
              
              
                {
              
              
                'code'
              
              
                :
              
              
                'python'
              
              
                }
              
              
                if
              
              
                'name'
              
              
                in
              
               d
              
                :
              
              
                print
              
              
                (
              
              d
              
                [
              
              
                'name'
              
              
                ]
              
              
                )
              
              
                else
              
              
                :
              
              
                print
              
              
                (
              
              
                'default'
              
              
                )
              
              
                # get()替代 if ... else ...
              
              
                print
              
              
                (
              
              d
              
                .
              
              get
              
                (
              
              
                'name'
              
              
                ,
              
              
                'default'
              
              
                )
              
              
                )
              
            
          

字典和列表的不同

  • 从创建方式上,列表使用的是方括号,字典使用的是花括号。
  • 字典里的对象是无序的,通过key-value来表示一种映射关系;列表中的元素是有序的,可以通过序号直接获取元素,或者通过切片操作获取多个元素。
  • 相对而言,字典更耗费空间,因为需要维护key。
  • list随着数量的正常增长要想查找元素的时间复杂度为O(n), dict不随数量而增长而变化,时间负责都为O(1)

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论