python初学一(dict的处理方式)

一、字典的基本知识:

             1、无序、可变,可以通过key索引,不可切片。

             2、字典的key是不可变数据类型,可以是bool值。

二、字典的创建:

         1、  直接创建

                  

         2、系统函数创建:dict

                    dict() 的语法:

                

dict_01 = dict()             #   {}
print(dict_01)
dict_02 = dict(a = '1',b = 2,c = 'p')   #  传入关键字   {'a': '1', 'b': 2, 'c': 'p'}
print(dict_02)
dict_03 = dict(zip(['a','b','c'],['1',2,'p']))       #   映射函数  {'a': '1', 'b': 2, 'c': 'p'}
print(dict_03)
dict_04 = dict([('a','1'),('b',2),('c','p')])        # 传入可迭代对象   {'a': '1', 'b': 2, 'c': 'p'}
print(dict_04)

       3、字典函数创建:  dict.fromkeys(iterable,value)   

  •                特点: value相同(只能有一个)
dict1 = dict.fromkeys(['aa','bb','cc'],)
dict2 = dict.fromkeys(['aa','bb','cc'],555)
print(dict1)
print(dict2)

                                                

      4、 dict.setdefault( key , 值  ) 创建多层字典:

                     特点: setdefault 中的 值 可以是 {} 、[ ]

dict1 = {}
dict1.setdefault("张三",{})
print(dict1)            ------------------- 结果:{'张三': {}}
dict1["张三"].setdefault("爱好",{})
print(dict1)            ------------------- 结果:{'张三': {'爱好': {}}}

三、字典的操作:

        1、查询元素:

                       ①  dict[key]             

dict1 = {"name":"liu","age":18}
print("name")

                       ②dict.get(key,值)函数:

dict1 = {"name":"liu","age":18}
print(dict1.get("name",False))

                       ③dict.setdefault( key , 值  )获取,注意getsetdefault区别。

dict1 = {"name":"liu","age":18}
print(dict1.setdefault("name","张三"))

        2、添加与修改元素:

                        ①  dict[key] = value

dict1 = {"name":"liu","age":18}
dict1["addr"] = "杭州"

                        ②  dict.setdefault( key , 值  )

dict1 = {"name":"liu","age":18}
print(dict1.setdefault("sex","男"))

         3、删除字典元素:

                        ① del 关键字语句:

                          

 

                                ② pop(key) 通过 key删除元素,并且获得

                                    

                                 ③ popitem()随机删除一个,并且获得 键值对

                                 

四、字典的函数:

    1、字典常用的系统函数:

               

                  注意   str() 转化后需要用系统函数  eval()来提取字符串中的数据。

    2、取字典的key、value、key:value:

  •              dict.keys()、dict.values()、key.items()、 key in dict

     (1)  dict.keys()、dict.values():

  •                 特点: 是一个迭代对象,可以用 list()、tuple()转化、for 遍历

                      

dict1 = {"name":"liu","age":18}
print(dict1.keys())   -------- 迭代对象
print(list(dict1.keys()),tuple(dict1.keys()))  -------- 转化为 列表 元组
for i in dict1.keys:                           -------- for 遍历
    print(i)

       (2) key in dict 判断key是否存在:

  •            特点:①返回值是 bool值,常用于条件判断
  •                       ② 只能判断 key,不能判断 value

               

print('c' in dict_04)       #  key in dict 只能判断 key。

     (3)key.items():

  •                       特点: ① 结果 : 是一个 由key和vlaue组成的元组,这些元组又组成一个序列对象(与enumerate()
  •                                                   结果结构相似)
  •                                   ② 是一个迭代对象,可以用 list()、tuple()转化、for 遍历

                           

    3、dict.get(key,值)、.setdefault(key,值 ):

  •              特点:① dict.get(key,值) 常用于通过key取值 和 判断key是否存在
  •                         ② .setdefault(key,值 ) 常用于更新字典。

              

  •                        注意     .get()不改变字典的原始数据,区分与 .setdeafult()

              

dict_04 = dict([('a','1'),('b',2),('c','p')])        # 传入可迭代对象   {'a': '1', 'b': 2, 'c': 'p'}
print(dict_04.get('c',888888))       # p
print(dict_04.get('jjjj',888888))      #  888888
print(dict_04) #  {'a': '1', 'b': 2, 'c': 'p'}  ,即只是读取,不改变数据的原始结构。
print(dict_04.setdefault('jjjj',888888))     # key不存在时会追加 键值对
print(dict_04)      # 结果 :{'a': '1', 'b': 2, 'c': 'p', 'jjjj': 888888}

        4、dict.fromkeys( iterable , value ),生成字典,value相同:

dict1 = dict.fromkeys(['aa','bb','cc'],)
dict2 = dict.fromkeys(['aa','bb','cc'],555)
print(dict1)
print(dict2)

                 

五、Dict 常见操作

​
按照字典值的大小对字典进行排序

1. 利用zip函数将key值和value值位置进行颠倒,再使用sorted进行排序

例如:
from random import  randint
d= {k:randint(0,20) for k in 'abcdefg'}
#{'f': 10, 'g': 16, 'a': 18, 'c': 12, 'e': 16, 'd': 7, 'b': 16}
z = list(zip(d.values(),d.keys()))
# zip函数就是将输入的序列重新组合成每个元素都是元组的列表,其中每个元素由输入序列相同位置的元素组成
#[(10, 'f'), (16, 'g'), (18, 'a'), (12, 'c'), (16, 'e'), (7, 'd'), (16, 'b')]
print(sorted(zip(d.values(),d.keys())))
#[(7, 'd'), (10, 'f'), (12, 'c'), (16, 'b'), (16, 'e'), (16, 'g'), (18, 'a')]
2.利用匿名函数进行排序
print(sorted(d.items(),key = lambda k : k[1]))
#[('d', 7), ('f', 10), ('c', 12), ('g', 16), ('e', 16), ('b', 16), ('a', 18)]
3. 使用operator.itemgetter函数
import operator
print(sorted(d.items(), key=operator.itemgetter(1)))
#[('d', 7), ('f', 10), ('c', 12), ('g', 16), ('e', 16), ('b', 16), ('a', 18)]

​

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值