Python 如何使用字典理解从列表中创建和增加字典中的值
我正在创建一个简单的函数,它获取一个数字列表,并返回一个包含所有奇数和偶数之和的字典 我可以使用传统的Python 如何使用字典理解从列表中创建和增加字典中的值,python,dictionary,increment,dictionary-comprehension,Python,Dictionary,Increment,Dictionary Comprehension,我正在创建一个简单的函数,它获取一个数字列表,并返回一个包含所有奇数和偶数之和的字典 我可以使用传统的for循环来实现这一点,所以我想知道是否有一种方法可以使用字典理解来实现这一点。我试过了,但是我找不到一种方法来使用+=增加理解中的每个值 这是我的代码,带有一个for循环: def sum(a): results = {"even":0, "odd":0} for val in a: if val % 2 == 0: results["e
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
您不能在dict CONTRUSION中分配/重新分配密钥。
一次遍历无论如何比两次遍历的潜在一行要好: 更简化/简洁的版本:
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}
非常感谢你的帮助!我只是想知道有没有办法。根据您的建议,我将使用for-loop版本。非常感谢您的帮助!