Python 中的 3 级嵌套字典理解
3 level nested dictionary comprehension in Python
我有一个 Python 字典如下:
d = {'1': {'1': 3, '2': 1, '3': 1, '4': 4, '5': 2, '6': 3},
'2': {'1': 3, '2': 3, '3': 1, '4': 2},
'3': {'1': 1, '2': 1, '3': 3, '4': 2, '5': 1, '6': 1, '7': 1},
'4': {'1': 1, '2': 1, '3': 3, '4': 2, '5': 1, '6': 1, '7': 1}}
我对字典有这样的操作:
D = {}
for ko, vo in d.items():
for ki, vi in vo.items():
for i in range(vi):
D[f'{ko}_{ki}_{i}'] = someFunc(ko, ki, i)
我想将其翻译成具有字典理解的单行代码,如下所示:
D = {f'{ko}_{ki}_{i}': someFunc(ko, ki, i) for i in range(vi) for ki, vi in vo.items() for ko, vo in d.items()}
但是我得到一个错误
NameError: name 'vi' is not defined
谁能帮我用正确的语法来实现这个目标?
必须颠倒循环的顺序。
这就是您要查找的内容:
D = {f'{ko}_{ki}_{i}': someFunc(ko, ki, i) for ko, vo in d.items() for ki, vi in vo.items() for i in range(vi) }
列表理解中的 for
子句应以 相同的 顺序出现在等效的 for-loop 代码中。唯一“移动”的是最里面的赋值被开头的表达式替换。
详情请见https://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/
我有一个 Python 字典如下:
d = {'1': {'1': 3, '2': 1, '3': 1, '4': 4, '5': 2, '6': 3},
'2': {'1': 3, '2': 3, '3': 1, '4': 2},
'3': {'1': 1, '2': 1, '3': 3, '4': 2, '5': 1, '6': 1, '7': 1},
'4': {'1': 1, '2': 1, '3': 3, '4': 2, '5': 1, '6': 1, '7': 1}}
我对字典有这样的操作:
D = {}
for ko, vo in d.items():
for ki, vi in vo.items():
for i in range(vi):
D[f'{ko}_{ki}_{i}'] = someFunc(ko, ki, i)
我想将其翻译成具有字典理解的单行代码,如下所示:
D = {f'{ko}_{ki}_{i}': someFunc(ko, ki, i) for i in range(vi) for ki, vi in vo.items() for ko, vo in d.items()}
但是我得到一个错误
NameError: name 'vi' is not defined
谁能帮我用正确的语法来实现这个目标?
必须颠倒循环的顺序。
这就是您要查找的内容:
D = {f'{ko}_{ki}_{i}': someFunc(ko, ki, i) for ko, vo in d.items() for ki, vi in vo.items() for i in range(vi) }
列表理解中的 for
子句应以 相同的 顺序出现在等效的 for-loop 代码中。唯一“移动”的是最里面的赋值被开头的表达式替换。
详情请见https://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/