我对单行 if else 语句有问题

sha*_*imi 0 python built-in python-3.x

这是发生的神秘问题,我在这里有字典并尝试遍历它并创建一个新的字典:

myDict = {(i,j):(i,j,i+j) if i != j else (i,2*i,3*i,4*i) for i in range(1,7) for j in range(1,7)}

newDict = {}
for i,j in myDict.items():
    for jj in j:
        newDict[jj]=[i] if jj not in newDict.keys() else newDict[jj].append(i)
Run Code Online (Sandbox Code Playgroud)

但它在第三个周期停止并面临此错误:

AttributeError: 'NoneType' 对象没有属性 'append'

但是当将 if else 语句更改为此代码时:

newDict = {}
for i,j in myDict.items():
    for jj in j:
        if jj not in newDict .keys():
            newDict[jj]=[i]
        else:
            newDict[jj].append(i)
Run Code Online (Sandbox Code Playgroud)

这个代码块工作正常,但我不知道第一个代码块有什么问题。

Say*_*yse 5

这两个代码片段不等价,append将返回 none 然后您尝试将 None 存储在newDict[jj]

你应该使用 adefaultdict代替

from collections import defaultdict
newDict = defaultdict(list)
for i,j in myDict.items():
    for jj in j:
        newDict[jj].append(i)
Run Code Online (Sandbox Code Playgroud)