字典解析式可用于根据现有的可迭代对象创建新的字典。在Python中,这种方式的语法非常直观,通常涉及一个迭代器、一个表达式对,以及一个可选的条件表达式。这与列表解析类似,但是创建的是字典而不是列表。
这里有一些字典解析的例子:
如果你想要一个字典来存储数字及其对应的平方,可以这样做:
squares = {x: x**2 for x in range(6)}
print(squares)
# 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
如果你只想包含那些数字平方大于等于10的键值对,可以添加一个条件表达式:
squares = {x: x**2 for x in range(6) if x**2 >= 10}
print(squares)
# 输出: {4: 16, 5: 25}
如果你有两个列表,一个作为键,一个作为值,可以这样合并它们:
keys = ["a", "b", "c"]
values = [1, 2, 3]
dictionary = {k: v for k, v in zip(keys, values)}
print(dictionary)
# 输出: {'a': 1, 'b': 2, 'c': 3}
如果你需要反转字典中的键和值,确保原始字典的值是唯一的:
original = {'a': 1, 'b': 2, 'c': 3}
flipped = {value: key for key, value in original.items()}
print(flipped)
# 输出: {1: 'a', 2: 'b', 3: 'c'}
你还可以在字典解析中执行更复杂的表达式,比如基于条件的值转换:
original = {1: 'a', 2: 'b', 3: 'c'}
transformed = {key: value.upper() if key % 2 == 0 else value.lower() for key, value in original.items()}
print(transformed)
# 输出: {1: 'a', 2: 'B', 3: 'c'}
这些例子显示了字典解析在创建和转换字典时的强大和灵活性。因为字典解析式底层是优化过的所以使用起来通常比等效的循环更加快速。