window.cnblogsConfig = { animate: { backgroundMouse: { enable: true, }, } { enable: false, // 是否开启 options: { size: 8, // 中心圆点的大小,单位 px sizeF: 36 // 外部边框的大小,单位 px } } }

学习python的心酸历程----字典

字典

字典是一种数据的集合,邮件支队组成的数据集合,键不能重复

字典中的键是不可变数据类型,常用的键有字符串、整形

定义


  • 字典可以通过将以逗号分隔的 键: 值 对列表包含于花括号之内来创建,例如: {'jack': 4098, 'sjoerd': 4127}

  • 可以通过 dict 构造器来创建。

    a = dict(one=1, two=2, three=3)
    f = dict({'one': 1, 'three': 3}, two=2)
    
  • 数据类型的转换

     c = dict([['one',1], ['two',2]])  #{'one': 1, 'two': 2}
    
  • zip压缩,dict转换

     c = dict(zip(['one', 'two'], [1, 2]))  #{'one': 1, 'two': 2}
    

字典数据的操作


var1 = {'a': 1, 'b': 2, 'c':3}
var2 = {'one': 1, 'two': 2, 'three':3}
  • 获取字典元素d[key] = value
print(var1['a'])  #1
  • 修改字典
var1['b'] = '二'
  • 删除字典元素
del var2['three']
  • 添加元素
var1['aa'] = 11   
print(var1)   #{'a': 1, 'b': 2, 'c':3, 'aa': 11}

注:如果字典里面的key重复了,就会被覆盖

  • 成员检测
res = 'two' in var2
print(res)  #Ture
res = 'AA' not in var2
print(res)  #True
  • 获取当前字典的长度(只能检测当前有多少对键值对)
res = len(var2)
print(res)   #3
  • 获取当前字典的所有key
res = var2.keys()
print(res)  #dict_keys(['one', 'two', 'three'])
  • 获取当前字典的所有value
res = var2.values()
print(res)  #dict_values([1, 2, 3])
  • 获取当前字典的所有键值对
res = var2.items()
print(res)  #dict_items([('one', 1), ('two', 2), ('three', 3)])
  • 对字典进行遍历

    遍历出的是key

for i in var2:
    print(i, end = " ")  #one two three
    print(var2[i])  #通过key获取value  >>1 2 3

​ 遍历字典时使用items函数,可以在遍历中获取key和value

var2 = {'one': 1, 'two': 2, 'three':3}
for a,b in var2.items():
    # print(a, end= ' ')   #one two three
    # print(b, end= ' ')   #1 2 3
    print(a,b, end= ' ')   #one 1 two 2 three 3

字典的相关函数


  • len(字典) 获取字典键值对的个数
  • dict.keys 获取当前字典的所有key,组成的列表
  • dict.values() 获取当前字典的所有value,组成的列表
  • dict.items() 返回由字典项 ((键, 值) 对) 组成的一个新视图
  • dict.iter() 返回以字典的键为元素的迭代器。
    var2 = {'one': 1, 'two': 2, 'three':3}
    res = iter(var2)
    
  • dict.pop() 通过key从当前字典中弹出键值对
    res = var2.pop('one')
    print(res)	#1
    print(var2) #{'two': 2, 'three': 3}
    
  • dict.popitem() 键值对会按 LIFO 的顺序被返回(后进先出)
    res = dict.popitem()
    
  • dict.get() 通过key找value,如果找不到,不会报错报None
    res = var2.get('aa')
    print(res)   #None
    print(var2)   #{'one': 1, 'two': 2, 'three': 3}
    
  • dact.update()字典的更新操作,如果key存在,则更新,key不存在,则添加
    var2.update(a = 11, b = 22)
    print(var2)  #{'one': 1, 'two': 2, 'three': 3, 'a': 11, 'b': 22}
    
  • dict.setdefault()如果字典存在键 key ,返回它的值。如果不存在,插入值为 default 的键 key ,并返回 defaultdefault 默认为 None
    # re = var2.setdefault('aaa')
    # print(re)
    re = var2.setdefault('aaa','123')
    print(var2)  #{'one': 1, 'two': 2, 'three': 3, 'aaa': '123'}
    

字典推导式


把字典中的键值对位置进行交换
#常规方法
var1 = {'a': 1, 'b': 2, 'c':3}
new1 = {}
for k,v in var1.items():
    new1[v] = k
print(new1)    #{1: 'a', 2: 'b', 3: 'c'}
#推导式
new1 = {v:k for k,v in var1.items()}
print(new1)    #{1: 'a', 2: 'b', 3: 'c'}
#注意:以下推导式返回的结果是一个集合
new1 = {v for k,v in var1.items()}
print(new1)    #{1, 2, 3}
posted @ 2021-12-09 19:26  浅言的测试笔记  阅读(47)  评论(0)    收藏  举报