|
发表于 2024-5-2 09:15:58
|
显示全部楼层
本楼为最佳答案
本帖最后由 smallwh 于 2024-5-2 09:20 编辑
- members = {
- "鱼C工作室":{"小甲鱼":83,"不二如是":89,"二师兄":64,"小师妹":75,"鱼小二":96},
- "复仇者联盟":{"钢铁侠":85,"绿巨人":39,"黑寡妇":82,"鹰眼":73,"雷神":99},
- "奥特曼家族":{"迪迦":99,"艾斯":84,"泰罗":63,"佐菲":78,"赛文":79},}
- minpoints = []
- for i in members:
- teammates = members[i].items()
- minperson = min(teammates,key = lambda x:x[1])[0]
- minpersonname = ':'.join((i,minperson))
- minpoints.append(minpersonname)
- print(minpoints)
复制代码
先把一行拆成多行。
1.的 i 遍历外层字典的键,也就是队伍名称
2.- teammates = members[i].items()
复制代码 根据队伍名称获取队伍情况的字典(内层字典),再将字典的键值对转换为类似嵌套列表的东西(.items())
- >>> members[i].items()
- dict_items([('迪迦', 99), ('艾斯', 84), ('泰罗', 63), ('佐菲', 78), ('赛文', 79)])
复制代码
3.- minperson = min(teammates,key = lambda x:x[1])[0]
复制代码 比较每个元素【如('泰罗', 63)】的大小,依据是每个元素的第二项(key = lambda x:x[1])。再取最小的元素的第一项,也就是人名
4.- minpersonname = ':'.join((i,minperson))
复制代码 将队伍名称与得分最低的人名拼起来
这样如果有什么不理解的地方,可以在程序里添加print语句输出每个变量每次循环的值
你也可以继续拆这个多行的程序,使其每一行只完成一件事
最后将拆成多行的程序还原为一行。 |
|