python中的lambda可以迭代dict吗?

chy*_*ENG 11 python lambda dictionary

我最近接受采访.面试官问我如何迭代词典python.我说所有的方式用于声明.但是他告诉我lambda怎么样?

我非常感到困惑,我认为lambda是一个匿名函数,但它如何迭代一个字典?一些代码如下:

new_dict = sorted(old_dict.items(), lambda x: x[1]) # sorted by value in dict
Run Code Online (Sandbox Code Playgroud)

但在此代码中,lambda用作提供比较密钥的函数.你觉得这个问题怎么样?

And*_*rey 10

你没有迭代lambda.在Python中迭代可迭代对象有以下几种方法:

  1. for 声明(你的答案)
  2. 理解,包括列表[x for x in y],字典{key: value for key, value in x}和集{x for x in y}
  3. 生成器表达: (x for x in y)
  4. 传递给函数会遍历它(map,all,itertools模块)
  5. 手动调用next函数直到StopIteration发生.

注意:3除非您稍后迭代该生成器,否则不会迭代它.在4的情况下,它取决于功能.

对于迭代特定集合(如dict或list),可以使用更多技术,例如while col: remove element或使用索引切片技巧.

现在lambda进入图片.您可以在其中一些函数中使用lambdas,例如:map(lambda x: x*2, [1, 2, 3]).但是这里的lambda与迭代过程本身无关,你可以传递一个常规函数map(func, [1, 2, 3]).


Eug*_*tov 8

您可以像这样使用 lambda 迭代 dict:

d = {'a': 1, 'b': 2}
values = map(lambda key: d[key], d.keys())
Run Code Online (Sandbox Code Playgroud)

  • 严格来说,`map` 是遍历字典 (9认同)
  • 值 =d.values() !! (2认同)