我最近接受采访.面试官问我在
python中迭代dict的方法.我说所有的方式用于声明.但是他告诉我lambda怎么样?
我非常感到困惑,我认为lambda是一个匿名函数,但它如何迭代一个字典?一些代码如下:
new_dict = sorted(old_dict.items(),lambda x: x[1]) # sorted by value in dict
但在此代码中,lambda用作提供比较密钥的函数.你觉得这个问题怎么样?
解决方法
你不用lambda迭代.在Python中迭代可迭代对象有以下几种方法:
> for statement(你的答案)
>理解,包括列表[x表示y中的x],字典{键:键的值,x中的值}和设置{x表示x中的x}
>生成器表达式:(x代表y的x)
>传递给迭代它的函数(map,all,itertools模块)
>手动调用next函数,直到stopiteration发生.
注意:3除非您稍后迭代该生成器,否则不会迭代它.在4的情况下,它取决于功能.
对于迭代特定集合(如dict或list),可以使用更多技术,例如col:remove元素或使用索引切片技巧.
现在lambda进入了画面.您可以在其中一些函数中使用lambdas,例如:map(lambda x:x * 2,[1,2,3]).但是这里的lambda与迭代过程本身无关,你可以传递一个常规的函数映射(func,3]).