Python字典是一个无序的key-value对集合。其中key必须唯一且不可变,而value可以是任何数据类型。Python中的字典可以用大括号 {} 或者dict()函数来创建。
创建Python字典
以下是用大括号{}创建字典的方法:
# 创建一个空字典
empty_dict = {}
# 创建有初始化键值对的字典
person = {'name': 'Alice', 'age': 24}
# 将二元元组列表转成字典
coords = [('x', 1), ('y', 2)]
dict(coords)
# 输出{'x': 1, 'y': 2}
获取字典中元素的值
可以使用中括号[],也可以使用get()方法获取字典中的元素,当key不存在时,使用get()方法可以设置默认值。
# 通过变量使用中括号获取字典元素的值
person = {'name': 'Alice', 'age': 24}
print(person['name']) # 输出 'Alice'
# 通过变量使用get()方法获取字典元素的值
# 如果key不存在,返回默认值None
# 也可以自定义默认值
person = {'name': 'Alice', 'age': 24}
print(person.get('height')) # 输出 None
print(person.get('height', 1.7)) # 输出 1.7
更改字典元素的值
可以直接通过中括号[],给字典的key重新赋值,或者使用update()方法批量更新。
# 直接通过中括号修改字典元素
person = {'name': 'Alice', 'age': 24}
person['name'] = 'Bob'
print(person) # 输出 {'name': 'Bob', 'age': 24}
# 使用update方法批量更新字典
person = {'name': 'Alice', 'age': 24}
person.update({'name': 'Bob', 'height': 1.7})
print(person) # 输出 {'name': 'Bob', 'age': 24, 'height': 1.7}
字典的遍历
可以使用for循环遍历字典的key或者value,或者遍历key-value对,使用items()方法返回的二元元组迭代。
# 遍历字典的key
person = {'name': 'Alice', 'age': 24}
for key in person:
print(key)
# 输出 'name' 和 'age'
# 遍历字典的value
person = {'name': 'Alice', 'age': 24}
for value in person.values():
print(value)
# 输出 'Alice' 和 24
# 遍历字典的key-value对
person = {'name': 'Alice', 'age': 24}
for key, value in person.items():
print(key, value)
# 输出 'name' 'Alice' 和 'age' 24
示例
举个例子,假设我们要统计一个字符串中每个单词出现的次数,可以使用字典来完成。
string = 'this is a string that contains some repeated words this is not a new string'
# 将字符串转成单词列表
words = string.split()
# 统计每个单词的出现次数
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
# 输出结果
for word, count in word_count.items():
print(f"{word}: {count}")
# 输出结果
'''
this: 2
is: 2
a: 2
string: 2
that: 1
contains: 1
some: 1
repeated: 1
words: 1
not: 1
new: 1
'''
另一个例子,在Flask框架中,我们可以使用字典来保存user_id和对应的user对象,方便通过user_id来查找对应的user对象。
from flask import Flask, json
app = Flask(__name__)
# 模拟数据
users = {
'1': {'name': 'Alice', 'age': 24},
'2': {'name': 'Bob', 'age': 25}
}
# 通过user_id获取user对象
@app.route('/user/<user_id>')
def get_user(user_id):
user = users.get(user_id)
if user:
return json.dumps(user)
else:
return f"No user found for user_id: {user_id}"
以上就是Python字典的基础操作的完整攻略。