[英]How to create a dictionary using python list comprehension from 2 list
[英]How to create and increment a value in a dictionary from a list using dictionary comprehension
我正在创建一个简单的 function ,它接受一个数字列表并返回一个字典,其中包含所有奇数和偶数的总和。
我可以使用传统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)}
你最好按照现在的方式去做。 话虽如此,不要命名 function sum
。 它是一个内置的 function。
你最好循环你现在的样子,因为它只需要一次迭代:
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
您不能在dict理解中分配/重新分配给键。
无论如何,单次遍历都比具有 2 次遍历的潜在单行更好:
更简化/简洁的版本:
def sum_odd_even_numbers(lst):
d = {"even": 0, "odd": 0}
for val in lst:
d['even' if val % 2 == 0 else 'odd'] += val
return d
print(sum_odd_even_numbers([2,4,5,7,8])) # {'even': 14, 'odd': 12}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.