def enrollments(db : {str:{(str,str)}}) -> [(str,int)]:
for node, value in db.items():
lst=[]
lst.append((node, len(value)))
print(lst)
该函数尝试读取字典并返回两个元组列表,其中包含密钥的名称和密钥中的值的数量。但是当我运行它时,它会显示:
enrollments({'ICS-31': {('Bob', 'A'), ('David', 'C'), ('Carol', 'B')},
'Math-3A': {('Bob', 'B'), ('Alice', 'A')}
})
[('Math-3A', 2)]
我出错了吗?
答案 0 :(得分:4)
每次迭代都会将lst
变量重新分配给空list
。分配一次,之前循环:
lst = []
for node, value in db.items():
lst.append((node, len(value)))
你也可以使用理解并完全避免这个问题:
lst = [(node, len(value)) for node, value in db.items()]
返回None
的问题将通过实际返回来解决:
def enrollments(db : {str:{(str,str)}}) -> [(str,int)]:
return [(node, len(value)) for node, value in db.items()]
答案 1 :(得分:1)
您实际上甚至不需要使用.items(),您只需执行以下操作:
def enrollments(dictionary):
_return_list_ = []
for node in dictionary:
_return_list_.append((node,len(dictionary[node])))
return _return_list_