北京网优化seo公司,企业网站seo排名优化,佛山技术支持 骏域网站建设,找人做企业网站 注意什么学习python的第十天之数据类型——dict字典 Python 中的字典#xff08;Dictionary#xff09;是一个非常强大的内置数据类型#xff0c;它用来存储键值对#xff08;key-value pairs#xff09;信息。字典是无序的#xff0c;这意味着它们不会记录你添加键值对的顺序Dictionary是一个非常强大的内置数据类型它用来存储键值对key-value pairs信息。字典是无序的这意味着它们不会记录你添加键值对的顺序然而从 Python 3.7 开始字典是按照插入顺序进行排序的这是一种实现上的细节但在 Python 3.6 以及更早的版本中并无此保证。字典中的键必须是唯一的而值则可以是任何数据类型。 支持的数据类型int, str, float, bool, complex, list, dictionary, tuple, set 特点 以键值对保存键不能重复不能更改但值可以字典没有下标因为底层实现也是哈希表 创建字典 可以使用大括号 {} 和冒号 : 来创建一个字典。 # 创建一个空字典
my_dict {}
print(my_dict) # 输出: {}使用 dict() 构造函数 my_dict dict()
print(my_dict) # 输出: {}或者传入一个包含元组的列表每个元组代表一个键值对 my_dict dict([(name, John), (age, 30), (city, New York)])
print(my_dict) # 输出: {name: John, age: 30, city: New York}# 创建一个包含一些键值对的字典
my_dict {name: Alice, age: 25, city: New York, high: 1.75, list: [1,2,3], tuple: (4,5,6), dic: {1: 1}, set: {7,8,9}}
print(my_dict)
# 输出: {name: Alice, age: 25, city: New York, high: 1.75, list: [1, 2, 3], tuple: (4, 5, 6), dic: {1: 1}, set: {8, 9, 7}}字典的key键必须是不可变的数据类型如intstrfloattuplebool # 创建一个包含一些键值对的字典
my_dict {one: 1, 2: two, 3.0: 3, (4,): four, True: 5}
print(my_dict)
# 输出: {one: 1, 2: two, 3.0: 3, (4,): four, True: 5}访问字典中的值 可以通过键来访问字典中的值。 如果尝试访问一个不存在的键Python 会抛出一个 KeyError。 my_dict {name: John, age: 30, city: New York}# 访问字典中的值
name my_dict[name] # 输出 Alice
age my_dict[age] # 输出 30# 使用get()方法访问字典中的值
city my_dict.get(city) # 输出 New Yorkjob my_dict.get(job)
print(job) # 输出 Nonecountry my_dict.get(country, Unknown)
print(country) # 输出 Unknown因为country键不存在添加或修改字典 当键值存在时可以通过键名来修改字典中的值 my_dict {name: John, age: 30, city: New York}
my_dict[age] 31
print(my_dict) # 输出: {name: John, age: 31, city: New York}当键值不存在时可以通过键名来添加字典中的键值对 my_dict {name: John, age: 30, city: New York}
my_dict[job] Teacher
print(my_dict) # 输出: {name: John, age: 30, city: New York, job: Teacher}删除字典中的元素 可以使用 del 语句或者 pop() 方法来删除字典中的元素 my_dict {name: John, age: 30, city: New York}
del my_dict[city] # 删除键是 city 的键值对
print(my_dict) # 输出: {name: John, age: 30}value my_dict.pop(age) # 删除键是 age 的键值对并返回其值
print(my_dict) # 输出: {name: John}可以使用 popitem() 方法来删除字典中的随机元素 my_dict {name: John, age: 30, city: New York}
value my_dict.popitem()
print(my_dict) # 输出: {name: John, age: 30}字典的遍历 可以遍历字典的键、值或者键值对 遍历键 my_dict {name: John, age: 30, city: New York}
for key in my_dict:print(key)
# name
# age
# city或者 my_dict {name: John, age: 30, city: New York}
for key in my_dict.keys():print(key)
# name
# age
# city遍历值 my_dict {name: John, age: 30, city: New York}
for value in my_dict.values():print(value)
# John
# 30
# New York遍历键值对 my_dict {name: John, age: 30, city: New York}
for key, value in my_dict.items():print(key, value)
# name John
# age 30
# city New York字典的常用函数 返回所有键的列表 keys()返回字典中所有键的视图对象。这个视图对象会随字典的改变而改变但它本身并不支持任何修改操作比如添加或删除键。 my_dict {name: Alice, age: 30, city: New York}
keys my_dict.keys()
print(keys) # 输出: dict_keys([name, age, city])返回所有值的列表 **values()**返回字典中所有值的视图对象。与keys()类似这个视图对象也会随字典的改变而改变但不支持修改。 my_dict {name: Alice, age: 30, city: New York}
values my_dict.values()
print(values) # 输出: dict_values([Alice, 30, New York])返回所有键值对的元组列表。 **items()**返回字典中所有键值对的视图对象(一个列表)每个键值对都是一个元组做为列表的一个元素。这个视图对象同样会随字典的改变而改变但不支持修改。 my_dict {name: Alice, age: 30, city: New York}
items my_dict.items()
print(items) # 输出: dict_items([(name, Alice), (age, 30), (city, New York)])更新字典 **update(other_dict)**用other_dict中的键值对来更新当前字典。如果other_dict中的键在当前字典中已经存在则对应的值会被替换如果不存在则新的键值对会被添加到当前字典中。 my_dict {name: Alice, age: 30, city: New York, job: Teacher}
other_dict {age: 25, job: Engineer}
my_dict.update(other_dict)
print(my_dict) # 输出: {name: Alice, age: 25, city: New York, job: Engineer}获取键的值 **get(key, default)**获取字典中指定键的值。如果键不存在则返回指定的默认值而不是抛出KeyError。 my_dict {name: Alice, age: 30, city: New York}
age my_dict.get(age, 0) # 键age存在返回其值30
print(age) # 输出: 30country my_dict.get(country, Unknown) # 键country不存在返回默认值Unknown
print(country) # 输出: Unknown为字典中的某个键设置一个默认值 setdefault(key, default)如果键不存在于字典中则添加键并将默认值设为其值如果键已经存在则返回该键的值而不改变字典。 my_dict {name: Alice, age: 30, city: New York}
hobby my_dict.setdefault(hobby, Reading) # 键hobby不存在添加并返回默认值Reading
print(hobby) # 输出: Reading
print(my_dict) # 输出: {name: Alice, age: 30, city: New York, hobby: Reading}name my_dict.setdefault(name, Bob) # 键name存在返回其值Alice而不改变字典
print(name) # 输出: Alice检查一个键是否存在于字典中 in 和 not in这两个操作符用于检查一个键是否存在于字典中。in 返回 True 如果键在字典中否则返回 Falsenot in 则相反。 my_dict {name: Alice, age: 30, city: New York}
print(name in my_dict) # 输出: True
print(job not in my_dict) # 输出: True检查一个键的值是否存是某个值只能用于判断值不能判断键 is 和 is not这两个操作符用于检查一个键是否存在于字典中。is 返回 True 如果键在字典中否则返回 Falseis not 则相反。 my_dict {name: Alice, age: 30, city: New York}
print(my_dict[name] is Alice) # 输出: True
print(my_dict[age] is not age) # 输出: True字典展开运算符 在Python 3.5及以上版本中** 可以作为字典展开运算符使用。它允许你将一个字典的内容展开为关键字参数传递给函数或者将两个字典合并成一个新字典。 # 作为关键字参数传递
def print_kwargs(**kwargs):for key, value in kwargs.items():print(f{key}: {value})my_dict {a: 1, b: 2}
print_kwargs(**my_dict) # 输出: a: 1 b: 2# 合并字典
dict1 {a: 1, b: 2}
dict2 {c: 3, d: 4}
merged_dict {**dict1, **dict2}
print(merged_dict) # 输出: {a: 1, b: 2, c: 3, d: 4}字典并集运算符Python 3.9及以上版本 在Python 3.9中引入了一个新的字典并集运算符 |它允许你以更简洁的方式合并两个字典。如果两个字典中有相同的键那么结果字典中将包含后一个字典中的值。 dict1 {a: 1, b: 2}
dict2 {b: 3, c: 4}
merged_dict dict1 | dict2
print(merged_dict) # 输出: {a: 1, b: 3, c: 4}字典推导式 字典推导式是Python中的一种简洁且强大的语法允许你快速创建新字典。它通常结合 for 循环和条件语句使用可以遍历一个序列或可迭代对象并根据每个元素生成一个新的键值对。 # 创建一个新字典其中键是原字典的键值是原字典值的平方
original_dict {a: 1, b: 2, c: 3}
squared_dict {k: v**2 for k, v in original_dict.items()}
print(squared_dict) # 输出: {a: 1, b: 4, c: 9}字典推导式还可以包含条件以过滤掉某些键值对 # 创建一个新字典只包含值大于1的键值对
original_dict {a: 1, b: 2, c: 3}
filtered_dict {k: v for k, v in original_dict.items() if v 1}
print(filtered_dict) # 输出: {b: 2, c: 3}获取字典长度 len() 函数用于返回对象中项目的数量。当len()函数作用于字典dict时它返回的是字典中键值对的数量也就是字典的长度。 # 创建一个字典
my_dict {name: Alice, age: 30, city: New York}# 使用len()函数获取字典的长度
dict_length len(my_dict)# 打印字典的长度
print(dict_length) # 输出: 3