Python构造一个字典数据类型?

phn*_*nah 1 python dictionary

我是python中的新手,刚刚遇到了这个声明

data = dict( (k, v) for k, v in data.items() if v != 'null')
Run Code Online (Sandbox Code Playgroud)

我不是他们在这里做什么来构建一个字典.你能解释一下吗?为什么在dict()中使用for循环以及为什么if之后呢?我没有在python文档中看到任何这样的东西.

多谢你们

srg*_*erg 6

代码使用dict构造函数来创建新字典.构造函数可以使用可迭代的键值对来初始化新字典.正如其他人所指出的那样,示例代码有一个生成器表达式,它创建了这个可重复的键值对.

生成器表达式有点像列表,可以像这样重写:

mylist = []
for k, v in data.items():
    if v != 'null':
        mylist.append((k, v))
Run Code Online (Sandbox Code Playgroud)

但它实际上从未创建一个列表,它只是在由dict构造函数处理时依次产生每个值.

至于为什么if循环之后,这是python开发人员选择的语法,所以你必须问他们.但请注意,在我重写的生成器表达式中,if语句位于for语句的内部(即之后).

我已经链接到python文档中关于生成器表达式的部分但是在unkulunkulu的请求中,这里还有几个:

  1. Carl's Groner的列表理解简介
  2. Fredrik Haard的如何(有效)解释列表理解