模块 6 · 第 2 课(共 4)课程中的22/36~10 min
模块课程(2/4)
字典和集合理解
用于列表推导的相同语法也适用于构建 dict 和 set 值 - 您只需更改括号即可。
字典理解
语法:{key: value for element in iterable}。
Python
quadrati = {n: n * n for n in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}常见模式:将元组列表转换为字典。
Python
coppie = [("a", 1), ("b", 2), ("c", 3)]
d = {k: v for k, v in coppie}
# {'a': 1, 'b': 2, 'c': 3}
# (equivalente a dict(coppie) in questo caso)交换字典的键和值:
Python
originale = {"a": 1, "b": 2, "c": 3}
invertito = {v: k for k, v in originale.items()}
# {1: 'a', 2: 'b', 3: 'c'}过滤字典:
Python
prezzi = {"mela": 1.2, "pera": 1.5, "kiwi": 2.5, "ananas": 4.0}
economici = {k: v for k, v in prezzi.items() if v < 2.0}
# {'mela': 1.2, 'pera': 1.5}集合理解
语法:{expression for element in iterable}。与列表相同
理解,但带有花括号。
Python
parole = ["ciao", "mondo", "ciao", "python"]
uniche = {p.upper() for p in parole}
# {'CIAO', 'MONDO', 'PYTHON'}姓名列表中唯一的首字母缩写:
Python
nomi = ["Ada", "Linus", "Grace", "Alan", "Guido"]
iniziali = {n[0] for n in nomi}
# {'A', 'L', 'G'}过滤+转换
与列表推导式一样,尾随的 if 过滤器:
Python
{n: n * n for n in range(10) if n % 2 == 0}
# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}用于交换键和值的字典理解
反转字典的一个非常常见的模式(交换键和值,假设值是唯一的)是:
Python
orig_dict = {'a': 1, 'b': 2}
inv_dict = {value: key for key, value in orig_dict.items()}
# result: {1: 'a', 2: 'b'}尝试一下
锻炼#python.m6.l2.e1
尝试:0加载中...
给定 `words = ['mela', 'pera', 'kiwi', 'banana']`,将 `lengths` 构建为字典 {word: len(word)}。评估“长度”。
正在加载编辑器...
显示提示
{p: len(p) 代表单词中的 p}
3 次尝试后可用的解决方案
复习练习
锻炼#python.m6.l2.e2
尝试:0加载中...
给定“nums = [1, 2, 2, 3, 4, 4, 5]”,将“unique_squares”构建为正方形的集合。评估“unique_squares”。
正在加载编辑器...
显示提示
不带“:”的花括号=集合理解。
3 次尝试后可用的解决方案
额外的挑战
锻炼#python.m6.l2.e3
尝试:0加载中...
Given the list of strings `names = ["Alice", "Bob"]`, use a dict comprehension to create a dictionary that maps each name to its length. Store the dictionary in `name_lengths` and evaluate it.
正在加载编辑器...
显示提示
语法为 {name: len(name) for name in names}。
3 次尝试后可用的解决方案