Как @Sayse уже хорошо указал, что 'append' является операцией на месте и после добавления в список ничего не возвращает ('None').
Объяснение причины ошибки
Вы присваиваете в части условия if выражения условия, что означает, что в последующем else (или elif) все, что будет вычислено, будет также назначено. Таким образом, в этом случае будет вычислено другое, и оно будет присвоено newDict [jj].
Итак, что происходит, что для первой итерации i your if условие if выполняется, поэтому оно добавляется к dict. Когда я равен 2, тогда остальное входит в картину. Итак, добавление происходит, но помните, что добавление вернет None. Вот почему он добавляет None к ключам 1, 2 и 3 NewDict, начиная с i = 2 и далее. Как только None уже существует, когда начинается итерация 3 (i = 3), вы ничего не можете добавить к None, и поэтому вы получаете ошибку в 3-м цикле. Однако, если вы не используете синтаксис условного выражения, он будет работать нормально.
Как его исправить (если вы хотите придерживаться условного выражения в одну строку)
Вы Можно использовать приведенный ниже код, чтобы убедиться, что else вычисляется с альтернативным синтаксисом. Обратите внимание на небольшую разницу.
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]+[i]
print(newDict)
Команда печати дает мне следующее. Не уверен, что это правильно! Это то, что вы хотели?