python - python中的lambda可以迭代dict吗?

标签 python dictionary lambda

我最近有个面试。面试官问我在python中迭代dict的方法。我说了所有的方法都使用for 语句。但他告诉我 lambda 怎么样?

我很困惑,我认为lambda是一个匿名函数,但它如何迭代一个dict?一些这样的代码:

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

但在此代码中,lambda 用作提供比较键的函数。你怎么看这个问题?

最佳答案

您不使用 lambda 进行迭代。在 Python 中有以下几种方法可以迭代可迭代对象:

  1. for 语句(你的答案)
  2. 理解,包括列表[x for x in y]、字典{key: value for key, value in x}和集合{x for x在y中
  3. 生成器表达式:(x for x in y)
  4. 传递给将对其进行迭代的函数(mapallitertools 模块)
  5. 手动调用 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/

相关文章:

python - 从外部文件加载配置的最佳 PySpark 实践是什么

python - 当数据库查询没有获取结果时,我怎么会出错?

python - Pytorch 中 [-1,0] 的维度范围是多少?

java - 在有效日志级别检查的上下文中,Log4j2 中的替换参数和 Java lambda 表达式有什么区别?

java lambda - 如何遍历可选列表/可选流

c++ - lambda 函数的静态数组 (C++)

python - 检查范围内的字段

dictionary - 如何使用 Swift 枚举作为字典键? (符合等式)

java - 将Clojure的以vector为key的map转为java HashMap

Python 将字典的值分配给列表