python-3.x - 使用列表中的值计数创建字典
问题描述
我试图弄清楚如何根据列表中的每个项目创建一个字典,其中的键为学校,并评估胜负平局。例如,调用 my_dict['Clemson'] 将返回字符串 "1-1-1" "
team_score_list =[['Georgia', 'draw'], ['Duke', 'loss'], ['Virginia Tech', 'win'], ['Virginia', 'loss'], ['Clemson', 'loss'], ['Clemson', 'win'], ['Clemson', 'draw']]
上述列表的输出应该是以下字典:
{'Georgia': 0-0-1, 'Duke': 0-1-0, 'Virginia Tech': 1-0-0, 'Virginia': 0-1-0, 'Clemson': 1-1-1}
就上下文而言,原始数据来自 CSV,其中每一行的形式为日期、对手、位置、点数、反对点。
例如:2016-12-31,Kentucky,Neutral,33,18。
我已经设法将数据整理到上面的列表中(尽管可能不是以最有效的方式),但是只是不确定如何将其转换为上面的格式。
任何帮助将不胜感激!
解决方案
我现在明白你的意思了:
你可以做
a = dict()
f = lambda x,s: str(int(m[x]=='1' or j==s))
for (i,j) in team_score_list:
m = a.get(i,'0-0-0')
a[i] = f"{f(0,'win')}-{f(2,'draw')}-{f(4,'loss')}"
{'Georgia': '0-1-0',
'Duke': '0-0-1',
'Virginia Tech': '1-0-0',
'Virginia': '0-0-1',
'Clemson': '1-1-1'}
现在这只是这个例子的答案。如果您有很多数据,最好使用列表然后在最后加入。例如
b = dict()
g = lambda x,s: str(int(m[x]) + (j==s))
for (i,j) in team_score_list:
m = b.get(i,[0,0,0])
b[i] =[g(0,"win"),g(1,"draw"),g(2,"loss")]
{key:'-'.join(val) for key,val in b.items()}
{'Georgia': '0-1-0',
'Duke': '0-0-1',
'Virginia Tech': '1-0-0',
'Virginia': '0-0-1',
'Clemson': '1-1-1'}
推荐阅读
- c# - 如何从方法返回动态和强类型对象
- sql-server - 为什么 MERGE 语句会抛出唯一键约束错误
- php - 是否可以让 Twig 强制渲染损坏的括号变量 {{ example } 而不是抛出异常?
- javascript - React 中的无限渲染
- linux - 为什么管道上的这个 strace 没有完成
- reactjs - 文件阅读器同步
- node.js - Node+React 部署到 Heroku:无法检测到此应用程序的默认语言
- reactjs - 使用 npm 为 react 项目导入 ScrollMagic 插件?
- python-3.x - 如何使用具有管理员属性的 system() 命令?
- python - numpy 从二维矩阵中获取子矩阵