Python 字典(Dict)详解与实战应用

目录

前言

一、字典的定义和创建

1.使用花括号定义

2.使用dict()函数创建

二、字典的三种遍历方式

方式1:遍历字典的键,通过键获取值  dict.keys()

方式2:遍历字典的值,但不能通过值获取键 dict.values()

方式3:最常用的方法:直接获取键值对  dict.items()

三、字典的常见操作

1.添加

2.删除

pop()根据键删除键值对,并返回值

popitem()默认删除最后一个键值对,并以元组的方式返回这个键值对

clear()清空字典

3.修改

4.查找

5.copy拷贝

1.浅拷贝

2.深拷贝

总结



前言

字典(Dict)是一种非常强大且常用的数据结构,它通过键值对(key-value pairs)的形式存储数据。字典的键(key)必须是唯一的且不可变(如字符串、数字或元组),而值(value)则可以是任意数据类型。


一、字典的定义和创建

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1.使用花括号定义

Python中,字典可以通过花括号{}直接定义,键和值之间用冒号:分隔,键值对之间用逗号,分隔。

# 使用花括号定义字典  
d1 = {  
    "name": "马云",  
    "age": 18  
}  
print(d1, type(d1))  # 输出: {'name': '马云', 'age': 18} <class 'dict'>

2.使用dict()函数创建

除了直接使用花括号,还可以使用dict()函数来创建字典。该函数可以接受多种形式的参数

# 使用dict()函数创建空字典  
d2 = dict()  
print(d2, type(d2))  # 输出: {} <class 'dict'>  
  
# 使用关键字参数创建字典  
d3 = dict(a=10, b=20, c=30)  
print(d3, type(d3))  # 输出: {'a': 10, 'b': 20, 'c': 30} <class 'dict'>  
  
# 使用包含键值对的列表(每个元素为元组)创建字典  
d4 = dict([("string1", "123"), ("string2", 456), ("a", 30), ("name", "malei")])  
print(d4, type(d4))  # 输出: {'string1': '123', 'string2': 456, 'a': 30, 'name': 'malei'} <class 'dict'>  
  
# 或者使用关键字参数形式,与直接赋值类似  
d4 = dict(string1="123", string2=456, a=30, name="malei")  
print(d4, type(d4))  # 输出同上

二、字典的三种遍历方式

方式1:遍历字典的键,通过键获取值  dict.keys()

# 方式1:遍历字典的键,通过键获取值  dict.keys()
d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
for k in d5.keys():
    print(k, d5[k])
"""输出:
name Jeci
age 18
phone_number 11335426987
address 河南省洛阳市
hobbies ['吃饭', '逛街', '打豆豆']
"""

方式2:遍历字典的值,但不能通过值获取键 dict.values()

d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
# 方式二:遍历字典的值,但不能通过值获取键  dict.values()
for v in d5.values():
    print(v)
"""输出:
Jeci
18
11335426987
河南省洛阳市
['吃饭', '逛街', '打豆豆']
"""

方式3:最常用的方法:直接获取键值对  dict.items()

d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
# 方式3:最常用的方法:直接获取键值对  dict.items()
for k, v in d5.items():
    print(k, v)
"""输出
name Jeci
age 18
phone_number 11335426987
address 河南省洛阳市
hobbies ['吃饭', '逛街', '打豆豆']
"""

、字典的常见操作

1.添加

要向字典中添加新的键值对,可以直接通过赋值操作完成

d5 = {
    "name": "Jeci",
    "age": 18,
    "phone_number": 11335426987,
    "address": "河南省洛阳市",
    "hobbies": ["吃饭", "逛街", "打豆豆"]
}
print("=================添加==================")
# 当键不存在时,会自动添加你写的键值对
d5["id"] = 101
print(d5["id"])  # 101
# 当键存在时,会修改键对应的值
d5["name"] = "luccy"
print(d5["name"])  # luccy

2.删除

pop()根据键删除键值对,并返回值

print("=================删除==================")
# pop()根据键删除键值对,并返回值
r = d5.pop("age")
print(r)  # 18
print(d5)  # {'name': 'luccy', 'phone_number': 11335426987, 'address': '河南省洛阳市', 'hobbies': ['吃饭', '逛街', '打豆豆'], 'id': 101}


popitem()默认删除最后一个键值对,并以元组的方式返回这个键值对

# popitem()默认删除最后一个键值对,并返回这个键值对
r = d5.popitem()
print(r)  # ('id', 101)
print(d5)  # {'name': 'luccy', 'phone_number': 11335426987, 'address': '河南省洛阳市', 'hobbies': ['吃饭', '逛街', '打豆豆']}


clear()清空字典

# clear()清空字典
d5.clear()
print(d5)  # {}

3.修改

update()将另一个字典的键值对信息更新到自己的字典中,若键重复,则更新键对应的值
print("=================修改==================")
# update()将另一个字典的键值对信息更新到自己的字典中,若键重复,则更新键对应的值
dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
dict1.update(dict2)
print(dict1)  # {'a': 1, 'b': 3, 'c': 4}

4.查找

get(k)获取键对应值并返回,若键不存在返回 None,
当你get(k,v)时:若键不存在,返回你指定的v,若k存在仍然返回字典中k对应的值
print("=================查找==================")
d5 = {
    "name": "luccy",
    "age": 18,
    "phone_number": 11335426987,
    }
# 获取键对应值并返回,若键不存在返回 None
print(d5.get("agg"))  # None
print(d5.get("name"))  # luccy
# 当查找的键不存在时,我们可以指定默认的返回值,键存在时,依旧返回键对应的值
print(d5.get("agg","鸡蛋"))  # 鸡蛋
print(d5.get("name","小米"))  # luccy

5.copy拷贝

1.浅拷贝

copy()浅复制:即复制旧的字典给到一个新的字典,当改变旧字典中的可变数据类型(list,dict)的数据时,新的字典也会随之改变
print("=================浅复制==================")
# copy()浅复制:即复制旧的字典给到一个新的字典,当改变旧字典中的可变数据类型(list,dict)的数据时,新的字典也会随之改变
old_dict = {"my_list": [1, 2, 3], "my_dict": {"a": 1, "b": 2}}
# 将old_dict字典浅复制给new_dict
new_dict = old_dict.copy()
print(old_dict)  # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}
print(new_dict)  # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}
# 改变old_dict中的可变数据类型的数据
old_dict["my_list"].append(4)
old_dict["my_dict"]["c"] = 3
# new_dict也会随着改变
print(old_dict)  # {'my_list': [1, 2, 3, 4], 'my_dict': {'a': 1, 'b': 2, 'c': 3}}
print(new_dict)  # {'my_list': [1, 2, 3, 4], 'my_dict': {'a': 1, 'b': 2, 'c': 3}}

2.深拷贝

# 引入 copy模块 ,使用deepcopy()
即复制旧的字典给到一个新的字典,当改变旧字典中的可变数据类型(list,dict)的数据时,新的字典将不再会随之改变
print("=================深复制==================")
# 引入 copy模块 ,使用deepcopy()
import copy

old_dict = {"my_list": [1, 2, 3], "my_dict": {"a": 1, "b": 2}}
# 将old_dict深复制给new_dict
new_dict = copy.deepcopy(old_dict)
print(new_dict)  # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}
# 改变old_dict中的可变数据类型的数据
old_dict["my_list"].append(4)
old_dict["my_dict"]["c"] = 3
# new_dict不会再随着old_dict改变
print(old_dict)  # {'my_list': [1, 2, 3, 4], 'my_dict': {'a': 1, 'b': 2, 'c': 3}}
print(new_dict)  # {'my_list': [1, 2, 3], 'my_dict': {'a': 1, 'b': 2}}

总结

本问主要介绍了python中的字典数据类型,包括字典的定义,创建,遍历方式,和字典几种常用的操作方法,其中字典的集中操作方法,是我们必须要掌握的。学习一种数据类型,就是学习他的方法。本文详细演示了并讲解了其中增,删,改,查和复制的方法,希望能帮助到各位理解字典。


                
1. 创建一个字典,包含你的姓名、年龄、性别和国籍。 ```python my_info = {'name': 'Alice', 'age': 25, 'gender': 'female', 'nationality': 'China'} ``` 2. 给定一个字典,输出它的所有键和值。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} for key, value in my_dict.items(): print(key, value) ``` 3. 给定一个字典,输出它的所有键。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} for key in my_dict.keys(): print(key) ``` 4. 给定一个字典,输出它的所有值。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} for value in my_dict.values(): print(value) ``` 5. 给定一个字典,删除键为 'a' 的键值对。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} del my_dict['a'] ``` 6. 给定两个字典,将它们合并为一个字典。 ```python dict1 = {'a': 1, 'b': 2} dict2 = {'c': 3, 'd': 4} merged_dict = {**dict1, **dict2} ``` 7. 给定一个字典,判断它是否包含键 'a'。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} if 'a' in my_dict: print('Yes') else: print('No') ``` 8. 给定一个字典,判断它是否包含值为 2 的键值对。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} if 2 in my_dict.values(): print('Yes') else: print('No') ``` 9. 给定一个字典,返回它的长度(即键值对的个数)。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} length = len(my_dict) ``` 10. 给定一个字典,将它的所有值加上10。 ```python my_dict = {'a': 1, 'b': 2, 'c': 3} for key in my_dict: my_dict[key] += 10 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值