Python开发——Python 字典的使用

1. 字典的基本操作

1.1 创建字典

# 使用花括号创建字典
dict1 = {'key1': 'value1', 'key2': 'value2'}

# 使用dict()函数创建字典
dict2 = dict(key1='value1', key2='value2')

1.2 访问字典的值

# 使用键访问值
print(dict1['key1'])  # 输出:value1

# 使用get()方法访问值
print(dict1.get('key1'))  # 输出:value1

2. `get()` 方法

2.1 基本用法

dict1 = {'key1': 'value1', 'key2': 'value2'}
print(dict1.get('key1'))  # 输出:value1
print(dict1.get('key3'))  # 输出:None

2.2 设置默认返回值

print(dict1.get('key3', '默认值'))  # 输出:默认值

2.3 不同类型的默认返回值

print(dict1.get('key3', 1))       # 输出:1
print(dict1.get('key3', 1.1))     # 输出:1.1
print(dict1.get('key3', True))    # 输出:True
print(dict1.get('key3', [1, 2]))  # 输出:[1, 2]
print(dict1.get('key3', (1, 2)))  # 输出:(1, 2)
print(dict1.get('key3', {1, 2}))  # 输出:{1, 2}

3. 嵌套字典取值

3.1 基本用法

dict1 = {'key1': 'value1', 'key2': {'key3': 'value3'}}
print(dict1.get('key2').get('key3'))  # 输出:value3

3.2 分步取值

result = dict1.get('key2')
print(result)  # 输出:{'key3': 'value3'}
result1 = result.get('key3')
print(result1)  # 输出:value3

4. 字典的常见操作

4.1 添加和修改字典项

dict1['key3'] = 'value3'  # 添加新项
dict1['key1'] = 'new_value1'  # 修改现有项
print(dict1)  # 输出:{'key1': 'new_value1', 'key2': 'value2', 'key3': 'value3'}

4.2 删除字典项

del dict1['key1']  # 删除键为'key1'的项
print(dict1)  # 输出:{'key2': 'value2', 'key3': 'value3'}

# 使用pop()方法删除并返回该项的值
value = dict1.pop('key2')
print(value)  # 输出:value2
print(dict1)  # 输出:{'key3': 'value3'}

4.3 遍历字典

for key, value in dict1.items():
    print(f'{key}: {value}')

5. 字典的高级操作

5.1 字典的合并

        在Python 3.9及以上版本中,可以使用 `|` 运算符合并字典:

dict1 = {'key1': 'value1'}
dict2 = {'key2': 'value2'}
merged_dict = dict1 | dict2
print(merged_dict)  # 输出:{'key1': 'value1', 'key2': 'value2'}

        在较低版本中,可以使用 `update()` 方法:

dict1.update(dict2)
print(dict1)  # 输出:{'key1': 'value1', 'key2': 'value2'}

5.2 字典推导式

        字典推导式可以用来创建字典:

squares = {x: x**2 for x in range(1, 6)}
print(squares)  # 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

5.3 使用 `defaultdict`

        `defaultdict` 是 `collections` 模块中的一个字典子类,它提供了一个默认值给所有不存在的键:

from collections import defaultdict

dd = defaultdict(lambda: '默认值')
dd['key1'] = 'value1'
print(dd['key1'])  # 输出:value1
print(dd['key2'])  # 输出:默认值

5.4 使用 `Counter`

        `Counter` 是 `collections` 模块中的一个字典子类,用于计数:

from collections import Counter

data = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(data)
print(counter)  # 输出:Counter({'apple': 3, 'banana': 2, 'orange': 1})

5.5 有序字典

        在Python 3.7及以上版本中,普通字典已经保证插入顺序。但是在较低版本中,可以使用 `OrderedDict`:

from collections import OrderedDict

od = OrderedDict()
od['key1'] = 'value1'
od['key2'] = 'value2'
od['key3'] = 'value3'
for key, value in od.items():
    print(f'{key}: {value}')

6. 字典的实际应用

6.1 统计字符出现次数

text = "hello world"
char_count = {}

for char in text:
    if char in char_count:
        char_count[char] += 1
    else:
        char_count[char] = 1

print(char_count)  # 输出:{'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}

6.2 将两个列表合并为字典

keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']

person = dict(zip(keys, values))
print(person)  # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'}

6.3 分组数据

        假设你有一组学生成绩数据,想要按班级分组:

students = [
    {'name': 'Alice', 'class': 'A', 'score': 85},
    {'name': 'Bob', 'class': 'B', 'score': 90},
    {'name': 'Charlie', 'class': 'A', 'score': 95},
    {'name': 'David', 'class': 'B', 'score': 80}
]

grouped_data = defaultdict(list)

for student in students:
    grouped_data[student['class']].append(student)

print(dict(grouped_data))
# 输出:
# {
#     'A': [{'name': 'Alice', 'class': 'A', 'score': 85}, {'name': 'Charlie', 'class': 'A', 'score': 95}],
#     'B': [{'name': 'Bob', 'class': 'B', 'score': 90}, {'name': 'David', 'class': 'B', 'score': 80}]
# }

        通过这些示例和扩展,希望你能更好地理解和应用Python中的字典。

相关推荐

  1. Python开发——Python 字典使用

    2024-07-09 21:40:01       23 阅读
  2. 6.5-1Python之列表嵌套字典使用

    2024-07-09 21:40:01       32 阅读
  3. Python】普通字典定义和使用方式

    2024-07-09 21:40:01       27 阅读
  4. python字典

    2024-07-09 21:40:01       27 阅读
  5. python字典

    2024-07-09 21:40:01       23 阅读
  6. python字典

    2024-07-09 21:40:01       27 阅读
  7. Python字典

    2024-07-09 21:40:01       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 21:40:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 21:40:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 21:40:01       57 阅读
  4. Python语言-面向对象

    2024-07-09 21:40:01       68 阅读

热门阅读

  1. 流媒体技术

    2024-07-09 21:40:01       25 阅读
  2. mysql面试题 Day5

    2024-07-09 21:40:01       22 阅读
  3. Xcode简介

    2024-07-09 21:40:01       22 阅读
  4. iOS项目怎样进行二进制重排

    2024-07-09 21:40:01       25 阅读
  5. 相机光学(二十八)——感光度(ISO)

    2024-07-09 21:40:01       21 阅读
  6. 【Adobe】Photoshop图层的使用

    2024-07-09 21:40:01       24 阅读
  7. Rust破界:前端革新与Vite重构的深度透视(上)

    2024-07-09 21:40:01       25 阅读
  8. bash终端快捷键

    2024-07-09 21:40:01       23 阅读