python字典的缩写
我尝试了几次搜索,但我真的不知道怎么问。我理解循环的缩写形式,但字典中的这一部分让我感到困惑python字典的缩写,python,dictionary,dict-comprehension,Python,Dictionary,Dict Comprehension,我尝试了几次搜索,但我真的不知道怎么问。我理解循环的缩写形式,但字典中的这一部分让我感到困惑 resistances = {k: v if random.random() > self.mutProb else not v for k, v in self.resistances.items()} 它是否先将k设置为键,然后再循环使用?我很难想象“长手”是什么。你有一个字典理解,对于for循环的每次迭代,都会执行两个表达式。一个用于键,一个用于值 因此,在表达式中: {k: v
resistances = {k: v if random.random() > self.mutProb else
not v for k, v in self.resistances.items()}
它是否先将k
设置为键,然后再循环使用?我很难想象“长手”是什么。你有一个字典理解,对于for
循环的每次迭代,都会执行两个表达式。一个用于键,一个用于值
因此,在表达式中:
{k: v if random.random() > self.mutProb else not v
for k, v in self.resistances.items()}
k
和v if random.random()>self.mutProb else not v
都是表达式,第一个表达式生成键,第二个表达式生成结果字典的每个键值对的值
如果要对循环使用,则上述操作将实现为:
resistances = {}
for k, v in self.resistances.items():
key = k
value = v if random.random() > self.mutProb else not v
resistances[key] = value
在您的示例中,只需将键设置为变量k
的值,但您也可以使用更复杂的表达式
词典理解是语言的一种专门化;另一种形式是从键值对的静态列表生成无循环的字典,您可能更熟悉:
d = {key1: value1, key2: value2}
但文件指出:
与列表和集合理解不同,dict理解需要两个用冒号分隔的表达式,后跟通常的“for”和“if”子句。运行理解时,生成的键和值元素将按生成顺序插入新词典
这被称为字典理解,简称dict comp。它遵循列表comp背后的相同概念。向外检查。。。惊人的反应。干杯