如何将Python字典初始化循环代码改写为字典推导式?
如何用字典推导式改写初始化空列表字典的循环?
当然可以!你这段初始化字典的循环代码完全可以用Python的字典推导式来简化,而且写法非常简洁直观。
改写后的代码
直接用字典推导式实现的版本是:
sd = {x: [] for x in range(n)}
效果与原代码一致
这个推导式和你原来的代码:
sd = {}; for x in range(n): sd[x] = []
实现的功能完全相同——创建一个键为range(n)中所有整数、每个键对应的值都是独立空列表的字典。
细节说明
- 字典推导式的核心结构是
{键表达式: 值表达式 for 变量 in 可迭代对象}:这里x是迭代range(n)得到的每个元素,作为字典的键;[]是每次迭代时生成的全新空列表,作为对应键的值。 - 不用担心列表引用共享的问题:因为每次循环都会生成一个新的空列表,所以每个键对应的列表都是独立的,不会出现修改一个列表影响其他键的情况。
示例验证
当n=3时,运行推导式会得到:
{0: [], 1: [], 2: []}
和原循环代码的输出完全一致。
内容的提问来源于stack exchange,提问作者N. Gene Eer
相关产品推荐
相关产品推荐

