我是 python 的新手,刚遇到这个语句
data = dict( (k, v) for k, v in data.items() if v != 'null')
我真的不知道他们在这里做什么来构建字典。你能给我解释一下吗?为什么在 dict() 中使用 for 循环以及为什么在 if 之后?我在 python 文档中没有看到这样的内容。
谢谢大家
请您参考如下方法:
代码使用 dict构造函数来创建一个新的字典。构造函数可以采用 iterable。用于初始化新字典的键值对。正如其他人指出的那样,示例代码有一个 generator expression创建这个可迭代的键值对。
生成器表达式有点像列表,可以这样重写:
mylist = []
for k, v in data.items():
if v != 'null':
mylist.append((k, v))
但它从来没有真正创建一个列表,它只是在字典构造函数处理它时依次产生每个值。
至于为什么if在循环之后,这是python开发人员选择的语法,所以你得问他们。但是请注意,在我重写的生成器表达式中,if 语句位于 for 语句内部(即之后)。
我已经链接到关于 generator expressions in the python documentation 的部分但应 unkulunkulu 的要求,这里还有一些:
- Carl's Groner's Introduction to List Comprehensions
- 弗雷德里克·哈德的 How to (Effectively) Explain List Comprehensions
