Python字典推导式

Python 字典推导式是一种创建字典的紧凑方式,类似于列表推导式。字典推导式允许您使用一行代码生成字典,而不必显式地编写多行代码来添加键值对。

字典推导式的语法

{key_expression: value_expression for element in iterable}

其中:

  • key_expression 是一个表达式,用于生成字典的键。
  • value_expression 是一个表达式,用于生成字典的值。
  • element 是可迭代对象中的每个元素。

Python 字典推导式示例

这段代码演示了字典推导式的用法,将两个列表 keys 和 values 中的元素一一对应,生成一个字典 myDict。最后打印出字典的内容。

# Python代码演示字典推导式

# 用于表示键和值的列表
keys = ['a', 'b', 'c', 'd', 'e']
values = [1, 2, 3, 4, 5]

# 这一行展示了字典推导式
myDict = {k: v for (k, v) in zip(keys, values)}

# 我们也可以使用下面的方式
# myDict = dict(zip(keys, values))

print(myDict)

输出:

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

使用 fromkeys() 方法

这里我们使用fromkeys()方法返回具有特定键和值的字典。

dic=dict.fromkeys(range(5), True)

print(dic)

输出:

{0: True, 1: True, 2: True, 3: True, 4: True}

使用字典推导式创建字典

这段代码演示了如何使用列表推导式创建字典 myDict,其中键是 1 到 5 的数字,对应的值是它们的平方。最后打印出字典的内容。

# Python代码演示使用列表推导式创建字典
myDict = {x: x**2 for x in [1,2,3,4,5]}
print(myDict)

输出:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

这段代码演示了如何使用列表推导式创建字典 sDict,其中键是字符串中的大写字母,对应的值是每个字母重复 3 次。最后打印出字典的内容。

sDict = {x.upper(): x*3 for x in 'coding '}
print (sDict)

输出:

{'O': 'ooo', 'N': 'nnn', 'I': 'iii', 'C': 'ccc', 'D': 'ddd', 'G': 'ggg'}

在字典推导式中使用条件语句

示例1:

我们也可以将字典推导式与 if 和 else 语句以及其他表达式一起使用。只有当立方数模 4 等于 0 时才会包括在字典中,因此包括了0、2、4、6 和 8 的立方数及其对应的键。

# Python代码演示带有条件的字典推导式
newdict = {x: x**3 for x in range(10) if x**3 % 4 == 0}
print(newdict)

输出:

{0: 0, 8: 512, 2: 8, 4: 64, 6: 216}

使用字典推导式创建嵌套字典

这个嵌套字典中,外部字典的键是字符串 “G” 和 “F”,内部字典的键也是 “G” 和 “F”,它们的值是两个字符连接起来的结果。

# given string
l="GFG"

# using dictionary comprehension
dic = {
	x: {y: x + y for y in l} for x in l
}

print(dic)