数据分析(二)

夫妻站---字典

    字典--python内置的数据结构之一,与列表一样是一个可变序列  可变序列是指可以进行增删改的序列

              以键值对的方式存储数据,字典是一个无序的序列        而列表是一个有序序列

             scores={‘张三’:100,‘李四’:98,‘王五’:45}  以键值对的方式存储

              字典存储数据要经过hash函数  hash(key)得出的数是数据的存储位置

               字符串是一个不可变序列,不能进行增删改

字典的创建

       最常用的方式:使用花括号      scores={‘张三’:100,‘李四’:200}    键是张三 值是00

       使用内置函数dict()       dict(name='jack',age=20)等号左侧是键 等号右侧是值

 字典中元素的获取

       获取字典中的元素  []    scores['张三]    如果字典中不存在指定的key,抛出keyError异常

       get()方法   scores.get('张三')                 如果字典中不存在指定的key,返回None ,可以通过参数设置默认的value,以便指定的key不存在时返回

                                                                     scores.get('张三',99)   

 key的判断

       key的判断     in   指定的key在字典红存在返回True   '张三'  in   scores

                             not in  指定的key不在字典红存在返回True   '张三' not  in   scores

字典元素的删除操作   del score['张三']  根据指定的键将键值对删除

                                           scores.clear()     将scores中的所有数据都清除

字典元素的增加操作     score[‘张三’]=98

字典元素的修改操作    score[‘张三’]=100   原来有张三这个key将其用新的值覆盖

获取字典视图的方法

        keys()  获取字典中的所有key

        values()获取字典中的所有value

        items()获取字典中的所有key和value键值对

       

scores={'张三':100,'李四':98,'王五':97}
keys=scores.keys()
print(keys,type(keys))
print(list(keys)) #通过list函数将keys视图转换为数组

dict_keys(['张三', '李四', '王五']) <class 'dict_keys'>['张三', '李四', '王五']

scores={'张三':100,'李四':98,'王五':97}
keys=scores.keys()
print(keys,type(keys))
print(list(keys)) #通过list函数将keys视图转换为数组
items=scores.items()
print(items)
print(list(items)) #转换之后的列表元素是由元组组成的
 

字典元素的遍历

     for item in scores:

          print (item)    #item是字典的键

         print(score[item])   获取字典的值

         print(scores.get(item)) 也是获取字典的值

字典的特点

       字典中的所有元素都是一个key-value的键值对,key不允许重复,value可以重复

       字典中的元素是无序的

       字典中的key必须是不可变对象      整数字符串是不可变的对象

      字典也可以根据需要动态伸缩

     字典会浪费较大的内存,是一种使用空间换时间的数据结构

字典生成式

     将已知的两个列表组成一个字典,使用内置函数zip(),用于将可迭代对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表

    

items=['Fruits','Books','Others']
prices=[96,78,85]
lst=zip(items,prices)
print(lst)
print(list(lst))
<zip object at 0x000001AD26C97840>
[('Fruits', 96), ('Books', 78), ('Others', 85)]

     {item.upper():price  for  items, price  in  zip (items,prices)}     for后的item用于做键的变量,price用于做值得变量  键和值变量的值是从zip (items,prices)压缩                                                                                                         包中得来的,这个zip是一个可迭代对象,列表本身就是可迭代对象

 

 

 

 

 

元组

       python内置的数据结构之一,是一个不可变序列

       不可变序列:字符串、元组

               不变可变序列:没有增删改的操作

        可变序列:列表、字典

                可变序列:可以对序列执行增删改操作,对象地址不发生更改

  元组 t=(‘Python’,'hello',90)使用小括号  列表使用的是【】中括号   字典使用的是{ }

  元组的创建方式   元组的数据类型tuple

         直接小括号  t=('Python' ,'hello',98)第一种创建方式 这个小括号可以省略不写   只有一个元素的时候 t3=10,    必须加上这个,才可以证明是元组否则认                                                                      为是str

        使用内置函数函数tuple()t=tuple(('Python' ,'hello',98))

         只包含一个元组的元素需要使用逗号和小括号t=(10,)    

        空列表的创建方式   lst[] 或者  lst=list()   

        空字典的创建方式    d={}  或者d2=dict()

        空元组的创建方式     t4=()  t5=tuple()

  元组是不可变序列的原因

       1.    在多任务环境下,同时操作对象时不需要加锁   (多任务是指多个人都同时操作这个数据,可变对象需要在有人操作时进行加锁,但是不可变对象共享                                                                                                就可以了)

       2.    在程序中尽量使用不可变序列

  元组中存储的是对象的引用

            如果元组中对象本身是不可变对象,则不能再引用其他对象    

             (t=(10,[20,30],9)  这里t只想一个元组 元组有三个引用指向,两个分别是不可变对象10 和9 ,另一个是指向一个可变序列列表 列表指向两个不可变序                                                  列20 30  ,引用不能更改  如果想要将指向列表的指针 指向一个新的对象是不可以的,但是可以在指向的列表之中添加新的元素

              

 

 

            如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变

元组的遍历

       元组是可迭代对象,可以使用 for...in进行遍历 for  item in  t:

                                                                                       print(item)

       

posted @ 2022-07-25 10:16  小小是  阅读(71)  评论(0)    收藏  举报