不能将元组添加到列表中?

时间:2018-01-14 01:19:31

标签: python list dictionary

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)]

我出错了吗?

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_