Python中Counter转字典遍历报错:ValueError: too many values to unpack
解决遍历Counter转换的字典时的ValueError问题
错误原因
直接遍历字典时,默认只会拿到键(也就是用户名),你却试图把单个字符串拆成user和num_contribution两个变量,自然会报"值太多无法解包"的错误。另外你代码里的字符串列表存在引号语法错误:'M. B, Jnr, 'Retro P'的引号嵌套混乱,导致元素划分错误。
修复方案
- 遍历字典时调用
items()方法,它会返回每个键值对的元组,这样就能正确解包成两个变量; - 修正字符串列表的引号问题,确保每个元素是独立的字符串。
修正后的代码
from collections import Counter def contribution(competition): # 修正字符串引号错误,确保每个元素独立 users = Counter(['Filipe Andrew', 'M. B, Jnr', 'Retro P', 'Filipe Andrew', ...]) # 约4200个元素 users_dict = dict(users) # 遍历字典的items()获取键值对 for user, num_contribution in users_dict.items(): print(user, ' -> ', num_contribution) contribution('year 2015_in_Brazil')
简化写法(无需转字典)
Counter本身支持直接遍历items(),可以省去转字典的步骤:
from collections import Counter def contribution(competition): users = Counter(['Filipe Andrew', 'M. B, Jnr', 'Retro P', 'Filipe Andrew', ...]) # 直接遍历Counter的键值对 for user, num_contribution in users.items(): print(user, ' -> ', num_contribution) contribution('year 2015_in_Brazil')
内容的提问来源于stack exchange,提问作者Casey Nwandu
相关产品推荐
相关产品推荐

