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)
这个代码块工作正常,但我不知道第一个代码块有什么问题。
这两个代码片段不等价,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)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |