|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本例中,键和值是怎么取出来的?逻辑想不通啊
本帖最后由 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语句输出每个变量每次循环的值
你也可以继续拆这个多行的程序,使其每一行只完成一件事
最后将拆成多行的程序还原为一行。
|
-
|