字典的特点:可变,无序,key不重复
字典的定义:
dict()或d = {}dict(**kwargs)
dict.fromkeys(iterable,value),可迭代对象的元素必须是一个二元结构
dict(mapping,**kwargs) 使用一个字典构建另一个字典
类方法dict.fromkeys(iterable, value)
字典元素的访问
d[key] 返回key对应的值,key不存在时抛出KeyError 异常get(key,[,default]) 返回key对应的值,key 不存在时返回缺省值,若未设置则返回None。
setdefault(key[,dafault]) 返回key对应的值,若不存在,则添加kv对
字典增加和修改
d[key] = value
将key对应的值修改为value
key不存在添加新的kv对
update([other]) -> None
使用另一个字典的kv对更新本字典
key不存在,就添加
key存在,覆盖已经存在的key对应的值
就地修改
字典删除
pop(key[, default])key存在,移除它,并返回它的value
key不存在,返回给定的default
default未设置,key不存在则抛出KeyError异常
popitem()
移除并返回一个任意的键值对
字典为empty,抛出KeyError异常
clear()清空字典
字典遍历
for key_1 in dict
for item in dict.items():
字典遍历和移除
d = dict(a=1, b=2, c='abc')
keys = []
for k,v in d.items():
if isinstance(v, str):
keys.append(k)
for k in keys:
d.pop(k)
print(d)
习题练习
1.用户输入一个数字,打印每一位数字及其重复的次数
dict1 = {}
user_num = input('<<<')
for i in user_num:
dict1.setdefault(i,0)
dict1[i] += 1
for i in dict1:
print(i,dict1[i])
2.数字重复统计:随机产生100个整数,数字的范围[-1000, 1000],升序输出所有不同的数字及其重复的次数
import random
dict1 = {}
n = 100
p = 1000
for i in range(n):
m = random.randint(-p , p)
dict1.setdefault(m,0)
dict1[m] +=1
dict2 = sorted(dict1.items())
print('\n'.join(map(str,dict2)))
3.字符串重复统计:
字符表'abcdefghijklmnopqrstuvwxyz',
随机挑选2个字母组成字符串,共挑选100个,
降序输出所有不同的字符串及重复的次数
import random
str1 = 'abcdefghijklmnopqrstuvwxyz'
dict1 ={}
for i in range(100):
str_choice = ''.join(random.sample(str1,2))
dict1.setdefault(str_choice,0)
dict1[str_choice] +=1
dict2 = sorted(dict1.items(),reverse=True)
print(dict2)