python - 如何使用字典理解从列表中创建和增加字典中的值

标签 python dictionary increment dictionary-comprehension

我正在创建一个简单的函数,它接受一个数字列表并返回一个包含所有奇数和偶数之和的字典。

我可以用传统的 for 做到这一点循环,所以我想知道是否有办法使用字典理解来做同样的事情。我试过了,但我找不到使用 += 来增加推导式中每个值的方法.

这是我的代码,带有 for环形:

def sum(a):
    results = {"even":0, "odd":0}
    for val in a:
        if val % 2 == 0:
            results["even"] += val
        elif val % 2 != 0:
            results["odd"] += val

这是我使用字典理解的尝试:
def sum(a):
    results = {even:+=x if x % 2 == 0 else "odd" for x in a}

最佳答案

没有办法有效地实现这一点。它可以是一个内衬,但随后您将进行两次迭代而不是一次:

def sum_odd_even(a):
   return {'odd': sum(x for x in a if x % 2), 'even': sum(x for x in a if x % 2 == 0)}

你最好按照你现在的方式去做。话虽如此,不要命名函数 sum .它是一个内置函数。

你最好循环你现在的样子,因为它只需要一次迭代:
def sum_odd_even(a):
  results = {"even":0, "odd":0}
  for val in a:
    if val % 2 == 0:
      results["even"] += val
    else:
      results["odd"] += val

关于python - 如何使用字典理解从列表中创建和增加字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58957085/

相关文章:

python - 如何强制 VS Code 在新终端中运行 Python 进程?

python - pyqtgraph:保存/导出 3d 图

python - 从列表字典创建并连接数据框

python - 转置没有 nan 的字典的字典

postgresql - 在 PostgreSQL hstore 中以原子方式递增,就像 MongoDB 中的 $inc

javascript - 增加javascript中使用的php变量

python - MySQL Workbench 开发者工具

c++ - 使用二叉树实现字典

java - yield 增加后 : How are They Implemented?

python - Onesignal - 如何使用 python 向 Android 设备发送推送通知?