Python --- 字典

字典

内存中 对外表现是数据地址以及命名空间
数据地址中是数据
命名空间中是对应关系

数据类型

数据类型划分:可变数据类型,不可变数据类型
不可变数据类型:元组,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 类型')

猜你喜欢

转载自blog.csdn.net/weixin_42484709/article/details/84570945
今日推荐