python学习—字典(Dictionary)

系列文章目录

python学习—列表和元组
python学习—循环语句-控制流
python学习—合并TXT文本文件
python学习—统计嵌套文件夹内的文件数量并建立索引表格
python学习—查找指定目录下的指定类型文件
python学习—年会不能停,游戏抽签抽奖
python学习—合并多个Excel工作簿表格文件



功能说明

本文简单介绍python中的字典(Dictionary),
字典是python 另一种可变、无序 容器模型,且可存储任意类型对象。
特性:

  • 字典的每个键值 key:value 对用冒号 : 分割,
  • 每个键值对之间用逗号 , 分割 简单理解 姓名 成绩 是一组键值对
  • 键一般是唯一的,如果重复了,最后的一个键值对会替换前面的,值不需要唯一
  • 键必须不可变,所以可以用数字,字符串或元组充当,用列表就不行
  • 整个字典包括在花括号 {} 中 ,
  • 格式如下所示:
scores = {'小明':95,'小红':90,'小刚':90} 

python版本为 python3

1 字典(Dictionary),

(1) 访问 读取

提取 字典提取 靠的是 键key

print(scores['小明'])                   # 95    标准格式  字典名[字典的键]
print(scores['小红'])                   # 90    字典名[字典的键]

print(scores['小宋'])                   # KeyError: '小宋'   访问没有的键,报错

(2) 添加 数据

增加标准格式 字典名[键] = 值

scores['小宋'] = 100
print(scores)                           # {'小明': 95, '小红': 90, '小刚': 90, '小宋': 100}

(3) 删除 数据

删除标准格式 del 字典名[键]

del scores['小刚']                      # 删除 小刚  的记录
print(scores)                           # {'小明': 95, '小红': 90, '小宋': 100}

spam = {'color': 'red', 'age': 42}
spam.clear()                            # 清空字典所有条目
print(spam)                             # {}     空字典

del spam                               # 删除字典

(4) 修改 数据

如果只需要修改键里面的值,直接对键 赋值

scores['小宋'] = 99 
print(scores)                           # {'小明': 95, '小红': 90, '小宋': 99}

(5) 字典不排序 无序

不像列表,字典中的项是不排序的。因为字典不排序,所以 不能像列表那样切片。

scores001 = {'小明': 95, '小红': 100, '小刚': 90}
scores002 = {'小红': 100, '小刚': 90, '小明': 95}
print(scores001 == scores002)             # True    说明  两个字典 完全一致 

(6)字典函数(len 、str)

print(len(scores001))              # 3  字典的长度 

hhh = str(scores001)               # str() 函数将值转化为适于人阅读的形式,以可打印的字符串表示
print(hhh)                         # {'小明': 95, '小红': 100, '小刚': 90}
print(type(hhh))                   # <class 'str'>    字符串          
print(type(scores001))             # <class 'dict'>   字典

(7)字典方法(key、value、items、get、pop、update、setdefault、fromkeys)

  • key() 字典的键
for k in scores001.keys():  # 循环迭代  键
    print(k)
# 小明
# 小红
# 小刚
  • value() 字典的值
for k in scores001.values():  # 循环迭代  值
    print(k)
# 95
# 100
# 90
  • item() 字典的 键值对
for k in scores001.items():  # 循环迭代  键值对
    print(k)
# ('小明', 95)               # 元组
# ('小红', 100)
# ('小刚', 90)
  • ‘键’ in 字典。判断 键 是否在 字典中,返回布尔值
print('小明' in scores001)    # True
print('王五' in scores001)    # False
  • 字典.get(键,default) 返回指定键的值,如果值不在字典中返回default值
print(scores001.get('小刚', '没有这个键'))         # 90
print(scores001.get('张三', '没有这个键'))         # 没有这个键
  • 字典.pop(键,default) 。删除字典给定键 key 所对应的值,返回值为被删除键的值。key值必须给出。 否则,返回default值。
print(scores001.pop('小刚', '没有这个键'))        # 90     删除 小刚 这个键值对。这里返回的是 小刚的 值  90
print(scores001)                                 # {'小明': 95, '小红': 100}  
print(scores001.pop('小刚', '没有这个键'))        # 没有这个键     因为没有 小刚这个键了,所以 返回  default
  • 字典.popitem() 。删除字典最后一组键值对。
print(scores001.popitem())                       # ('小红', 100)    删除 最后一组键值对。这里返回的是  键值对
print(scores001)                                 # {'小明': 95}  
  • 字典1.update(字典2) 。把字典dict2 的键/值对 更新到dict1 里。如果有键 重复,则覆盖
scores001.update(scores002)                      # 用 scores002 更新 scores001
print(scores001)                                 # {'小明': 95, '小红': 100, '小刚': 90}
  • 字典.setdefault(key, default=None) 。 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
scores001.setdefault('张三', 60)
print(scores001)                               # {'小明': 95, '小红': 100, '小刚': 90, '张三': 60}
scores001.setdefault('张三', 80)               # 已经有了  键  张三, 故 不添加了
print(scores001)                               # {'小明': 95, '小红': 100, '小刚': 90, '张三': 60}
  • 字典.fromkeys(seq[, value]) 。创建一个新字典,以序列 seq 中元素做字典的键,
  • value 为字典所有键对应的初始值,value – 可选参数, 设置键序列(seq)的值,默认为 None
abc = [1, 2, 3]
scores003 = dict(zip(abc,[10,20,30]))
print(scores003)                             # {1: 10, 2: 20, 3: 30}
scores004 = dict(zip(abc,[40]))
print(scores004)                             # {1: 40}
  • 字典.copy() 返回一个字典的浅复制 浅拷贝
scores006 = scores003.copy()
print(scores006)                           #  {1: 10, 2: 20, 3: 30}
scores003.clear()                          # 清空 
print(scores003)                           # {}
print(scores006)                           # {1: 10, 2: 20, 3: 30}

2 字典与列表嵌套

字典经常与列表一起,嵌套使用,在调用的时候有一些特殊格式。

(1) 列表嵌套列表

students = [['小明','小红','小刚','小美'],['小强','小兰','小伟','小芳']] 
//提取  小芳
print(students[1][3])                     #  小芳 。第一个元素中的第3个元素
//提取  小兰
print(students[1][1])                     #  小兰 。第1个元素中的第1个元素

(2) 字典嵌套字典

scores = {
    '第一组':{'小明':95,'小红':90,'小刚':100,'小美':85},
    '第二组':{'小强':99,'小兰':89,'小伟':93,'小芳':88}
    }
//小芳的成绩
print(scores['第二组']['小芳'])          #  88   。键 ‘第二组’的值(字典)中的键 ‘小芳’的  值
//小刚的成绩
print(scores['第一组']['小刚'])          #  100  。键 ‘第一组’的值(字典)中的键 ‘小刚’的  值

(3) 字典嵌套 列表

students = {
    '第一组':['小明','小红','小刚','小美'],
    '第二组':['小强','小兰','小伟','小芳']
    }
//提取  小美
print(students['第一组'][3])            # 小美  。键 '第一组'的值 (列表)中对应列表偏移量为3的元素

(4)列表嵌套 字典

scores = [
    {'小明':95,'小红':90,'小刚':100,'小美':85},
    {'小强':99,'小兰':89,'小伟':93,'小芳':88}
    ]
//提取 小强的成绩
print(scores[1]['小强'])                #  99。索引  1 的元素(字典)中键为 ‘小强’的值value。

4 后记

字典是Python中非常灵活且常用的数据结构,适用于需要快速根据标识(键)查找对应信息(值)的场景。

  • 17
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

da-peng-song

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值