Python 篇章(十二)

一、Dict 概念

1. 什么是字典?

  • 字典本质

    • 键-值(key-value)存储 单位
    • 字典 具有极快的查找速度
    • 一个字典里可以存储多个键-值
    • 字典是无序的!
  • key的特性

    • 字典中的key必须唯一
    • key必须是不可变对象(字符串、整数等都是不可变的,可作为key)(list列表是可变的,不能作为key)
  • 字典就是用 花括号 将 一个或多个 key-value 括起来的 存储单位

  • 左侧是key,右侧是value

  • 例如

  • dictlist 比较

  • dict

    • 优点:查找和插入的速度极快,不会随着key-value的增加而变慢

    • 缺点:需要占用大量的内存,内存浪费多

    • list

    • 优点:占用空间小,浪费的内存小

      • 缺点:查找和插入的速度会随着数据量的增多而减慢

2. 如何创建字典?

  • 格式
    • 字典名 =
  • 示例
dict1 = {"tom":99,"lemon":100}
print(dict1)                     # {'tom': 99, 'lemon': 100}

二、字典操作

1. 增删改查

1.1 查看

  • 格式:字典名[key]
  • 注意:如果要查看的写入的 键名 不存在,会报错!!!
  • 示例:
dict1 = {666:"good", "lemon":100}
print(dict1)                      # {666: 'good', 'lemon': 100}
print(dict1[666])                 # good
print(dict1["lemon"])             # 100
# print(dict1["alex"])            # 报错;因为这个key不存在

1.2 追加 修改

  • 格式:字典名[key] = value
  • 示例:
dict2 = {"tom":60, "lemon":100}

# 追加一对key-value 'Abs': 70
dict2["Abs"] = 70
print(dict2)

# 因为一个key只能对应一个value值,所以,多次对一个key的value赋值,就是修改这个key的值
dict2["tom"] = 80
print(dict2)

1.3 pop() del() clear() 删除 清空

注意:不能删除不存在的 键值对

  • pop()删除指定的键值对
  • 示例
dict3 = {"tom": 80, "lemon": 100, "As": 70}

dict3.pop("As")
print(f"dict3 = {dict3}")
# dict3.pop("As")               # 报错;因为这个键值对已经不存在了
  • del() 删除字典 或 指定的键值对
  • 示例
dict3 = {"tom": 80, "lemon": 100, "As": 70}

# 删除指定键值对
del dict3["As"]
print(f"dict3 = {dict3}")

# 删除字典
del(dict3)
  • clear()重置字典
  • 示例
dict3 = {"tom": 80, "lemon": 100, "As": 70}

# 重置字典
print(f"dict3 = {dict3}")
dict3.clear()
print(f"dict3 = {dict3}")

2. 字典函数 及 遍历

2.1 函数

  • get()如果key存在,返回其对应的value值,如果不存在,返回None
  • keys()查找字典中所有的key;返回可迭代对象,里面的数据是列表,列表中的元素都是字典中的key名
  • values()查找字典中所有的value;返回可迭代对象,里面的数据是列表,列表中的元素都是字典中key名对应的value值
  • items()查找字典中所有的键值对;返回可迭代对象,里面的数据是元组,元组数据1是字典key,元组数据2是字典key对应的value值
  • 示例
dict4 = {"tom":60,"lemon":100, "lily":79}

#1 get() 
print(dict4.get("lemon"))    # 返回的是100
print(dict4.get("alex"))     # 返回的是None

#2 keys()
print(dict4.keys())          # dict_keys(['tom', 'lemon', 'lily'])

#3 values()
print(dict4.values())        # dict_values([60, 100, 79])

#4 items()
print(dict4.items())         # dict_items([('tom', 60), ('lemon', 100), ('lily', 79)])

2.2 遍历

  • keys()遍历字典中的所有key
  • values()遍历字典中的value
  • items()同时遍历字典中的key和value
  • enumerate(dict) 生成序列号;其实这种遍历方式是没有意义的,因为字典是无序的,即使有了序列号也是不稳定的
  • 示例
#1 keys()
dict5 = {"tom": 80, "lemon": 100, "As": 70}
for key in dict5.keys():   # key 键名
    print("key = %s" % key)


# values()
dict6 = {"tom": 100, "lemon": 70, "As": 59}
for value in dict6.values():    # value 值
    print("value = %d" % value)


# items()
dict7 = {"lemon": 100, "As": 70, "Bs": 59}
for key,value in dict7.items():
    print(f"{key} = {value}")


# enumerate(dict) 
dict8 = {"tom":60, "lemon":100, "lily":110}
for i, v2 in enumerate(dict8):
    print(i, v2)    
    # 虽然在输出的时候看起来字典是有序的,但实际上字典在内存中就是无序的,这点毋庸置疑

三、练习题

# 需求:有一个字符串,在控制台输入一个单词统计出现过多少次
# count
W = input("请输入一个单词:")
Str = "lemon is a good man lemon is a nice man lemon is a cool man lemon is a good man lemon is a noble man lemon is a good man"
print(Str.count(W))


# 字典
W = input("请输入一个单词:")
d = {}   # word:次数
Str = "lemon is a good man lemon is a nice man lemon is a cool man lemon is a good man lemon is a noble man"
t = Str.split(" ")  # 以空格为分隔符截取字符串,将字符串切割成列表
for v in t:
    c = d.get(v)
    if c == None:
        d[v] = 1
    else:
        d[v] += 1
print(d)          # 每个单词的次数
print(d[W])



'''流程
1、以空格切割字符串

2、循环处理列表中的每个元素

3、以元素当作key去一个字典中提取数据

4、如果没有提取到,就以该元素作为key,1作为value 存进字典

5、如果提取到,将对应的key的value值修改,值加1

6、根据输入的字符串当作key再去字典取值

'''
posted @   ArMinLi  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示