Python笔记第六节:字典的定义,访问,增删

字典(dict)的定义

  1. key - value键值对的数据集合
  2. 字典是可变的,无序的,key不能重复,key只能是不可变类型 可hash的

字典(dict)的定义 初始化

d = dict() 或者d = {}			#定义空字典
d1 = dict{a = 3,b = 4}
d2 = {'a':10}
dict(**kwargs) 使用可迭代对象和name= value键值对构造字典,不过可迭代对象的元素必须是一个**二元结构**
d3 = dict(((1,'a'), (2,'b')))或者d = dict(([1,'a'], [2,'b']))
dict(mapping, **kwarg) 使用一个字典构造一个字典
d4 = {'a':10,' b':20, 'c':None, 'd':[1,2,3]}
类方法dict.fromkeys(iterble, value)
d5 = dict.fromkeys(range(5))
d = dict.fromkeys(range(5),0)

字典的访问

d[key]:     #使用key来访问 返回key对应的值value,key不存在抛出KeyError异常
get(key[,default]): 返回key对应的value 如果key不存在返回缺省值,没有设置缺省值就返回None
d = {‘a' :1, 'b' :3, 'c' : 4}
d.get( d )				#返回None
d.get( d,200 )	#返回缺省值  200
setdefau;t(key[,default]):返回key对应的值value,key不存在就添加kv对,value设置为default,并返回default,如果default没设置,则返回缺省值None
d = {‘a' :1, 'b' :3, 'c' : 4}
d = setdefault('r, 2000)	#返回缺省值2000  并添加了kv对到d里面

字典的增加和删除

d[key] = value: 将key对应的值修改为value,**key不存在添加新的kv对**
d = {‘a' :1, 'b' :3, 'c' : 4}
d.['a'] = 123  #返回了’a'=123	 修改了
d.['f'] = 233		#添加了新的kv对 ‘f' : 233

update([other]) --> None

使用另一个字典的kv对更新本字典。key不存在就添加,key存在 覆盖已经存在的key对应的值 ,就地修改
d = {‘a' :1, 'b' =:3, 'c' : 4}
d.update(red=1)			#添加新的kv对
d.update((('red',2),))	#添加了二元组的可迭代对象
d.update({’red‘:3})			#这3种方式都支持

字典删除

pop(key[,default]):key存在异除它,并返回value,key不存在,返回给定的default。default未设置,key不存在则抛出KeyError异常
d = {‘a' :1, 'b' :3, 'c' : 4}
d.pop(1)			#报错  没有1这个key
d.pop(1,100)	$返回给的缺省值  100

popitem():移除并返回一个任意的键值对,字典为empty,抛出KeyError异常
d = {‘a' :1, 'b' :3, 'c' : 4}
d.popitem()		#随机删除键值对   返回一个任意的键值对 

cleat():清空字典
d = {‘a' :1, 'b' :3, 'c' : 4}
d.clear   #直接清空字典     要注意 数据存储不容易   多用一会最好

del语句:看着像是删除了一个对象,本质上减少了一个对象的引用  减少了引用计数,del实际上删除的是名称 而不是对象
d = {‘a' :1, 'b' :3, 'c' : 4}
del d      # 所有引用计数减一	  返回空

字典的遍历,遍历都是On

字典遍历

d = {‘a' :1, 'b' :3, 'c' : 4}
遍历key
for k in d:
	print(k)				#打印   a    b   c 
	
for k in d.keys():
	print(k)			#打印a   b  c 
	
遍历value
for v in d.value():
	print(v)			#打印 1  3  4

遍历kv对
for  item in d.item():
	print(item)		#返回(‘a',1, 'b' ,3, 'c' ,4) 二元组
for  k,v in d.item():
	print(k,v)		#返回  a  1  \n  b  3  \n   c  4	#循环中结构  

字典的遍历和移除
缺省字典(defaultdict)
缺省字典

OrderedDict:key并不是按照加入顺序排列的,可以使用OrderedDict记录顺序
OrderedDict

字典练习

  1. 用户输入一个数字 打印每一位数字及其重复次数
第一种
nums = input('Please a number>>').strip().lstrip('0')
counter = {}
for c in nums:
    if c not in counter.keys():
        counter[c] = 0
    counter[c] += 1
print(counter)

第二种
nums = input('Please a number>>').strip().lstrip('0')
counter = {}
for c in nums:
	counter[c] = counter.get(c,0) + 1
print(counter)	
  1. 数字重复统计
    随机产生100个整数 数字范围是【-1000,1000】升序输出这些数字并打印重复的次数
from collections import defaultdict
import random
nums = [random.randint(1, 10) for i in range(10)]

counter = defaultdict(lambda : 0)  			# 缺省字典  没有的话  补充零
for x in nums:
    counter[x] = counter[x] + 1 			#从nums里面遍历出来的元素与0配对   x:0
print(counter)

newlist = sorted(set(nums))
for x in newlist:
    print(x, counter[x])           #sorted()排序后返回新列表 升序打印
print('---------------------')
print(sorted(counter.items()))      #第二种打法 也可以 直接按照字典打法 去重也排序了

  1. 字符串重复统计
    字符表’abcdefghijklmnopqrstuvwxyz‘ 随机挑选两个字母组成字符串,共挑选100个 降序输出所有不同的字符串及其重复次数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值