首页 > 编程语言 > 详细

python dict(字典)

时间:2019-07-03 22:42:40      阅读:93      评论:0      收藏:0      [点我收藏+]

补充知识点1:

数据类型的划分:可变数据类型、不可变数据类型

  可变数据类型:     元组,bool,int,str      --可哈希

  不可变数据类型:  list,dict,set                --不可哈希 

dict key:     必须是不可变数据类型,可哈希

dict value:可以是任意数据类型

dict优缺点:①利用效率高的二分查找法查询数据  ②可以储存大量的关系型数据  ③Python3.5版本(包括此版本)之前,字典是无序的。在Python3.6版本之后,字典按照初建字典时的顺序排列。缺点:内存消耗巨大。

    字典的常用操作方法    

1.增

  ①通过键值对添加(无key添加,有key则value覆盖)

  ②setdefault(无key添加,有key跳过;有返回值)

技术分享图片
dic1 = {name: 太白,  age: 18}
# 通过键值对直接增加,有key则覆盖值
dic1[weight] = 65
dic1[name] = jin-xin
print(dic1)  # {‘name‘: ‘jin-xin‘, ‘age‘: 18, ‘weight‘: 65}

dic2 = {name: 太白,  age: 18}
# setdefault 无key添加,有key跳过;有返回值
dic2.setdefault(height, 180)
dic2.setdefault(name, alex)
print(dic2)  # {‘name‘: ‘太白‘, ‘age‘: 18, ‘height‘: 180}
print(dic2.setdefault(name))  # 太白
View Code

2.删

  ①pop(通过key删除键值对;有返回值)

  ②popitem(删除最后一个(3.6版本之后);有返回值)

  ③lcear(清空)

  ④del(删除)

技术分享图片
dic1 = {name: 太白,  age: 18, height: 180}
# pop  通过key删除键值对;有返回值
print(dic1.pop(name), dic1)  # 太白 {‘age‘: 18, ‘height‘: 180}

# popitem  删除最后一个(3.6版本之后);有返回值
print(dic1.popitem(), dic1)  # (‘height‘, 180) {‘age‘: 18}

# clear 清空
dic1.clear()
print(dic1)  # {}

dic2 = {name: 太白,  age: 18, height: 180}
# del 删除
del dic2[name]
print(dic2)  # {‘age‘: 18, ‘height‘: 180}
del dic2
print(dic2)  # 报错
View Code

3.改

  ①通过key直接更改

  ②update

技术分享图片
dic = {name: 太白,  age: 18}
# 通过key直接更改
dic[name] = alex
print(dic)  # {‘name‘: ‘alex‘, ‘age‘: 18}

# update
dic.update(age=22, height=180)
print(dic)  # {‘name‘: ‘alex‘, ‘age‘: 22, ‘height‘: 180}
dic.update([(1,a), (2, b)])
print(dic)  # {‘name‘: ‘alex‘, ‘age‘: 22, ‘height‘: 180, 1: ‘a‘, 2: ‘b‘}

dic1 = {1: a, 2: b, 3: c}
dic2 = {2: b, 3: t, 4: d}
dic2.update(dic1)  # 字典1添加/替换到字典2中,有key覆盖value,无key添加键值对
print(dic1)  # {1: ‘a‘, 2: ‘b‘, 3: ‘c‘}
print(dic2)  # {2: ‘b‘, 3: ‘c‘, 4: ‘d‘, 1: ‘a‘}
View Code

4.查

  ①通过key查询

  ②get

  ③keys   values  itmes

技术分享图片
dic = {name: 太白,  age: 18}
# 通过key查询
print(dic[name])  # 太白

# get 有返回值(可设置)
print(dic.get(name))  # 太白
print(dic.get(height))  # None

# keys  values  items
print(dic.keys())  # dict_keys([‘name‘, ‘age‘])
print(dic.values())  # dict_values([‘太白‘, 18])
print(dic.items())  # dict_items([(‘name‘, ‘太白‘), (‘age‘, 18)])
View Code

补充知识点2:分别赋值,也叫拆包

技术分享图片
a = 1
b = 2
print(a, b)  # 1 2
a, b = b, a
print(a, b)  # 2 1

a, b = (123, 321)
print(a, b)  # 123 321
a, b = [age, high]
print(a, b)  # age high
a, b = {name: zzl, age: 22}
print(a, b)  # name age
View Code

 

相关练习题:

如有下列物品:1:手机, 2:电脑, 3:鼠标垫, 4:游艇
# 创建一个用户查询程序: 1.用户输入相应序号,输出对应物品名称;如果没有则提示输入有误
# 2.用户输入列表或list展示所有:序号 物品
# 如:1 手机
# 2 电脑
# 3 鼠标垫
# ...
# 3.用户输入Q或q退出程序
技术分享图片
dic = {1: 手机, 2: 电脑, 3: 鼠标垫, 4: 游艇}

while 1:
    uaers_in = input(请输入序号查询商品(查看商品列表请输入列表/list;输入Q/q退出):)
    if uaers_in == list or uaers_in == 列表:
        for k, v in dic.items():
            print(k, v)
    elif uaers_in == Q or uaers_in == q:
        print(---程序已退出!---)
        break
    else:
        print(dic.get(int(uaers_in), 输入有误,请重新输入))
View Code

 

技术分享图片
flag = True
while flag:
    li = ["手机", "电脑", "鼠标垫", "游艇"]
    for i in li:
        print({}\t\t{}.format(li.index(i)+1,i))
    num_of_chioce = input(请输入选择的商品序号/输入Q或者q退出程序:)
    if num_of_chioce.isdigit():
        num_of_chioce = int(num_of_chioce)
        if num_of_chioce > 0 and num_of_chioce <= len(li):
            print(li[num_of_chioce-1])
        else:print(请输入有效数字)
    elif num_of_chioce.upper() == Q:
        break
    else:
        print(请输入数字)
View Code

 

python dict(字典)

原文:https://www.cnblogs.com/zhuzl/p/11129396.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!