我正在创建一个简单的函数,它接受一个数字列表并返回一个包含所有奇数和偶数之和的字典。
我可以用传统的 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/