Python基础之字典dict

本文详细介绍Python字典的基础知识,包括字典的创建、增删改查操作、遍历方法及其它常用方法。通过实例帮助读者掌握字典的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python基础之字典dict


字典:通过若干个键值对存取数据,每一个键值对都包含两部分:分别是key:value
从字典中存取数据可以直接根据key来实现,因此数据存取效率比列表更加高效


1.字典的创建

# 基本语法
dict = {key1 : value1, key2 : value2 }
# 例:
dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}

注意:

  1. 字典的值可以是任意类型的值,包括但不限于整型、字符串、列表、对象等
  2. 字典的键不允许重复,且是不可变的。如数字、字符串、元组等可作为字典的键,而列表等却不能

2.字典数据的增加

方法一: 直接赋值 dict[key] = value

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
dic["sex"] = "男"
print(dic)
# {'name': 'WXQ', 'age': 22, 1: [1, 2, 3], 'sex': '男'}

方法二: 字典的拼接 dic1.update(dic2)
使用字典dic2对dic1做数据更新,如果dic2中对应的键值对dic1之前不存在,此时对该键值对执行拼接操作,如果该键值对中键之前存在,此时执行数据更新

dic1 = {"name": "翠花", "sex": "女"}
dic2 = {"score": 30, "class": "计算机专业"}
dic1.update(dic2)
print(dic1)
# {'name': '翠花', 'sex': '女', 'score': 30, 'class': '计算机专业'}

方法三:将值的内容设置为列表,向列表中添加元素(基本不用


3.字典数据的删除

(1) dict.pop(key) 删除指定的键值对,并返回该值
dic1 = {"name": "翠花", "sex": "女"}
print(dic1.pop("sex"))
print(dic1)
# 女
# {'name': '翠花'}
(2) dict.popitem() 随机返回并删除字典中的一对键和值(一般删除末尾对)
dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
dic.popitem()
print(dic)
# {'name': 'WXQ', 'age': 22}
(3) dict.clear() 清空字典
dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
dic.clear()
print(dic)
# {}
(4) del dict[key] 删除指定的键(相当于把键值对一起删除)
dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
del dic["age"]
print(dic)
# {'name': 'WXQ', 1: [1, 2, 3]}
(5) del dict 删除整个字典,再次访问会抛出异常
dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
del dic
print(dic)
# NameError: name 'dic' is not defined

4.字典数据的更新

字典数据更新直接使用 dict[key] = 新值覆盖之前内容即可

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
dic["name"] = "二狗子"
print(dic)
# {'name': '二狗子', 'age': 22, 1: [1, 2, 3]}

5.字典数据的读取

(1) dict[key]

直接读取,如果不存在相应的值会抛出KeyError异常

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(dic["name"])
# WXQ
print(dic["school"])
# KeyError: 'school'
(2) dict.get(key,default = None)

根据指定的key来获取对应的value,该方法可以保证数据获取的安全性,即当没有对应的键时,计算机会返回一个default指定类型的数据,默认为None

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(dic.get("name"))
# WXQ
print(dic.get("school"))
# None
(3) str(dict)

将字典转化为字符串输出(正常情况下不会使用)

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(str(dic))
print(type(str(dic)))
# {'name': 'WXQ', 'age': 22, 1: [1, 2, 3]}
# <class 'str'>
(4) dict.keys()

以列表返回一个字典所有的键

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(dic.keys())
# dict_keys(['name', 'age', 1])
(5) dict.values()

以列表返回字典中的所有值

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(dic.values())
# dict_values(['WXQ', 22, [1, 2, 3]])
(6) dict.setdefault()

如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(dic.setdefault("name", None))
print(dic.setdefault("school", None))
print(dic)
# WXQ
# None
# {'name': 'WXQ', 'age': 22, 1: [1, 2, 3], 'school': None}
(7) dict.items()

以列表返回可遍历的(键, 值) 元组数组

dic1 = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(dic1.items())
# dict_items([('name', 'WXQ'), ('age', 22), (1, [1, 2, 3])])

6.字典遍历

方法一:for-in
如果直接遍历字典,每一次从字典中遍历出的是字典的key,根据key输出value

dic1 = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
for key in dic1:
    print(dic1.get(key))
# WXQ
# 22
# [1, 2, 3]

方法二:通过dict.item()
for-in 如果通过字典的dic.item()遍历字典,此时得到的是对应键值对的键值两部分内容

dic1 = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(dic1.items())
for key, value in dic1.items():
    print(key, ":", value)
# dict_items([('name', 'WXQ'), ('age', 22), (1, [1, 2, 3])])
# name : WXQ
# age : 22
# 1 : [1, 2, 3]

7.其他方法

(1) dict.copy()

返回一个字典的浅复制

dic1 = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
dic2 = dic1.copy()
dic1[1].append(4)
print(dic1)
print(dic2)
# {'name': 'WXQ', 'age': 22, 1: [1, 2, 3, 4]}
# {'name': 'WXQ', 'age': 22, 1: [1, 2, 3, 

注:浅复制:拷贝父对象,不会拷贝对象的内部的子对象。dic1 和 dic2 是一个独立的对象,但他们的子对象还是指向统一对象

(2) len(dict)

计算字典元素个数,即键值对的总数

dic = {"name": "WXQ", "age": 22, 1: [1, 2, 3]}
print(len(dic))
# 3
(3) dict.fromkeys(seq[, value])

用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
seq – 字典键值列表。
value – 可选参数, 设置键序列(seq)的值。

seq = ("naem", "sex", "age")
dic = dict.fromkeys(seq, None)
print(dic)
# {'naem': None, 'sex': None, 'age': None}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值