Juniorboy 发表于 2022-12-1 22:46:20

课后作业 语法嵌套

members = {
    "鱼C工作室" : {"小甲鱼":83, "不二如是":89, "二师兄":64, "小师妹":75, "鱼小二":96},
    "复仇者联盟" : {"钢铁侠":85, "绿巨人":39, "黑寡妇":82, "鹰眼":73, "雷神":99},
    "奥特曼家族" : {"迪迦":99, "艾斯":84, "泰罗":63, "佐菲":78, "赛文":78}}


x = [':'.join((i, min(members.items(), key = lambda x:x))) for i in members]
print(x)


有大佬解释一下 最后一句那个语法嵌套嘛lambda表达式的参数是在哪里传入的呀有点懵

lxping 发表于 2022-12-1 23:04:49

本帖最后由 lxping 于 2022-12-1 23:06 编辑

min 函数的key 参数指定一个用于比较的函数(类似于列表的 sort() 方法),详见:https://fishc.com.cn/forum.php?mod=viewthread&tid=190927&extra=page%3D1%26filter%3Dtypeid%26typeid%3D768
x 取自members.item() 也就是嵌套的字典生成的字典视图对象中的元素,通过索引取出数值用于min函数比较。

lassiter 发表于 2022-12-2 01:21:51

x = [':'.join((i, min(members.items(), key = lambda x:x))) for i in members]
把这句拆解来看,一般从后往前看
先看for i in members这是表示从members列表抽取元素;
':'.join((i, ……))表示要组成i:……的形式输出;
min(members.items()))表示想从members中选最小的元素的名称,即字典中的键,但是怎么定义最小;
key = lambda x:x就表示我设一个x,你min函数比较的每个元素需要先带入x,利用x进行比较,即字典中的值,返回一个序号,按这个序号输出一个结果members.items()

lassiter 发表于 2022-12-6 23:01:14

lassiter 发表于 2022-12-2 01:21
x = [':'.join((i, min(members.items(), key = lambda x:x))) for i in members]
把这句拆解来看, ...

是的,字典.items()可以让字典中的键值对以元组的方式输出,将每个元组带入x,x是键,x是值
页: [1]
查看完整版本: 课后作业 语法嵌套