Python如何实现选手比赛结果映射为指定字典输出格式
问题描述
现有输入数据:
results = [ {'WP': 'A', 'BP': 'B', 'result': '2-0'}, {'WP': 'C', 'BP': 'A', 'result': '1/2-1/2'}, ]
需要转换为如下格式的输出:
{ 'A': [ ('B',2.0), ('C',0.5) ],'B': [ ('A',0.0)], 'C':[('A',0.5) ] }
实现代码
from collections import defaultdict def str_to_score(score_str): # 处理分数字符串转浮点 if '/' in score_str: numerator, denominator = map(int, score_str.split('/')) return numerator / denominator return float(score_str) output = defaultdict(list) for match in results: wp, bp = match['WP'], match['BP'] wp_score_str, bp_score_str = match['result'].split('-') wp_score = str_to_score(wp_score_str) bp_score = str_to_score(bp_score_str) # 分别给双方添加对阵记录 output[wp].append((bp, wp_score)) output[bp].append((wp, bp_score)) # 转为普通字典(可选,按需保留) output = dict(output) print(output)
运行代码后即可得到符合要求的输出结果。
内容的提问来源于stack exchange,提问作者SBM2
相关产品推荐
相关产品推荐

