文章目录
字典
内存中 对外表现是数据地址以及命名空间
数据地址中是数据
命名空间中是对应关系
数据类型
数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,bool,int,str, 可哈希
可变数据类型:列表list,字典dict,集合set, 不可哈希
dict简述
dict key :必须是不可变数据类型,可哈希
value :任意数据类型。
dict 优点:
二分查找;
储存大量的关系型数据;
特点:
无序的3.5之前
有序的3.6之后
dict
dic = { # 字典嵌套列表
'信息': [
{'a': '16'}, # 列表嵌套字典
{'b': '18'},
],
'high': 180,
}
print(dic)
{'信息': [{'a': '16'}, {'b': '18'}], 'high': 180}
dict增加
setdefault
dic = {'name': 'lsc', 'age': 24, }
dic['high'] = 180 #没有键值对,则添加
dic['name'] = 'fhm' #有键值对,则修改
print(dic)
{'name': 'fhm', 'age': 24, 'high': 180}
dic = {'name': 'lsc', 'age': 24, }
dic.setdefault('high', 180) #没有键值对,则添加
dic.setdefault('name', 'fhm') #有键值对,则不进行处理
print(dic)
{'name': 'lsc', 'age': 24, 'high': 180}
dict删除
pop
dic = {'name': 'lsc', 'age': 24, }
q = dic.pop('name') # 有返回值
print(q)
>lsc
dic = {'name': 'lsc', 'age': 24, }
q = dic.pop('fhm', None)
print(q) #在删除某个不确定是否存在的键值时,为避免报错,自设返回值
>None
popitem
dic = {'name': 'lsc', 'age': 24, 'aaa': 'bbb'}
dic.popitem() # 有返回值(删除的键值),3.5之前随机删除
print(dic)
del
del dic
clear
dic.clear()
dict改
dic['name'] = 'fhm' # 改值
update
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic) # 更新添加新键值对
print(dic2)
> {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}
dict查找
print(dic1.keys(), type(dic1.keys())) #键
print(dic1.values()) # 值
print(dic1.items()) #键值
只打印键值,不打印元组
dic = {"name":"jin","age":18,"sex":"male"}
for k, v in dic.items():
print(k, v)
get
v1 = dic1['name']
print(v1)
v2 = dic1['name1'] # 报错
print(v2)
print(dic1.get('name1','没有这个键'))
> 没有这个键
练习题
dict嵌套练习
dic = {
'name': ['lsc', 'lzj', 'lxm'],
'py9': {
'time': 1213,
'learn_money': 19800,
'addr': 'CBD',
},
'age': 24,
}
dic['age'] = 25 # 修改值
dic['name'].append('fhm') # 列表添加一个值
dic['name'][1] = dic['name'][1].upper() # 转化大写
dic['py9']['age'] = 25 # 字典添加键值对
for k, v in dic.items():
print(k, v)
统计元素个数
isalpha()(判断是否为字符)
info = input('>>>').strip() # a1b2c3
for i in info:
if i.isalpha(): # 判断是否为字符
info = info.replace(i, ' ') # 将字符转化为空
print(info)
l = info.split() # 将字符串转化为列表
print(l)
print(len(l)) # 统计列表中元素的个数
输出类型
b = input(">>>")
a = b.isdigit()
print(a, type(b))
>>>1
True <class 'str'> # 输入是数字,类型是字符串
用户选择商品:
isdigit (判断是否为数字)
format (字符串初始化)
2、输出商品列表,用户输入序号,显示用户选中的商品
li = ["手机", "电脑", '鼠标垫', '游艇']
要求:
1:页面显示 序号 + 商品名称,如:
1 手机
2 电脑
…
2: 用户输入选择的商品序号,然后打印商品名称
3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
4:用户输入Q或者q,退出程序。
'''
# isdigit
# 如果B中的所有字符都是数字,则返回true
# B中至少有一个字符,否则为false。
lb = ["手机", "电脑", '鼠标垫', '游艇']
flag = True # 标志位,起关联作用
while flag:
for i in lb: # format 在返回值之间添加符号
print('{}\t{}'.format(lb.index(i) + 1, i))
info = input('请输入序号(输入Q/q退出) : ')
if info.isdigit(): # 判断是否为数字
info = int(info) # 改变数字的类型为int,用于比较大小
if info > 0 and info <= len(lb):
print(info, lb[info - 1])
else:
print('数字过大')
elif info == 'Q' or 'q':
print('退出')
break # 退出当前循环
else:
print('请输入 int 类型')