为什么下面的代码会失败?我得到一个'd_item'是未定义的错误。
inp = [{'Math': 90, 'Science': 92}, {'Math': 89, 'Science': 94}, {'Math': 92, 'Science': 88}]
d = [value for key, value in d_item.items() for d_item in inp]
然而,这段代码运行:
inp = [{'x': '10', 'y': '20', 'z': '30'}, {'p': '40', 'q': '50', 'r': '60'}]
ints = [dict([key,int(value)] for key, value in item.items()) for item in inp]
据我所知,他们都遵循相同的惯例。
我已经在这个问题上纠结了太久,为什么第二个代码块允许我在for语句中声明变量名之前使用变量名,而第一个代码块却不允许?
1条答案
按热度按时间7vux5j2d1#
从阅读以下内容开始:How does the list comprehension to flatten a python list work?
这是一个很好的解释如何处理嵌套的东西。
所以你的语法应该是:
至于为什么第二个工作,dict创建是1表达式(带有内部循环),基于它旁边的隐式(单个)循环。