我最近有个面试。面试官问我在python
中迭代dict的方法。我说了所有的方法都使用for 语句。但他告诉我 lambda 怎么样?
我很困惑,我认为lambda是一个匿名函数,但它如何迭代一个dict?一些这样的代码:
new_dict = sorted(old_dict.items(), lambda x: x[1]) # sorted by value in dict
但在此代码中,lambda 用作提供比较键的函数。你怎么看这个问题?
最佳答案
您不使用 lambda
进行迭代。在 Python 中有以下几种方法可以迭代可迭代对象:
for
语句(你的答案)- 理解,包括列表
[x for x in y]
、字典{key: value for key, value in x}
和集合{x for x在y中
- 生成器表达式:
(x for x in y)
- 传递给将对其进行迭代的函数(
map
、all
、itertools
模块) - 手动调用
next
函数直到StopIteration
发生。
注意:除非您稍后迭代该生成器,否则 3 不会迭代它。如果是 4,则取决于功能。
对于迭代特定的集合,如 dict 或 list,可以有更多的技术,如 while col: remove element
或使用索引切片技巧。
现在 lambda
出现了。您可以在其中一些函数中使用 lambda,例如:map(lambda x: x*2, [1, 2, 3])
。但是这里的 lambda 与迭代过程本身无关,你可以传递一个常规函数 map(func, [1, 2, 3])
。
关于python - python中的lambda可以迭代dict吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33077274/