我是Python的新手,但有可能做到以下几点吗? 我想创建一个字典test_tube,它显示了它中的液体和它的数量。使用add_liquid函数,我想在不使用默认值的情况下,将新液体或更多以前使用的液体添加到试管中。
Def add_liquid(test_tube,liquid,milliliters=0):
test_tube[liquid] = milliters
return test_tube
#update of previous test tube and memorize new test tube
>>>add_liquid(test_tube,'water',10)
{'water':10}
>>>more_water=add_liquid(test_tube,'water',5)
>>>more_water
{'water':15}
>>>add_liquid(test_tube,'ethanol',1)
{'ethanol':1, 'water':15}
Python必须以某种方式记住test_tube中先前的液体量。 任何意见,将不胜感激!
答案 0 :(得分:5)
如果我正确理解您的问题,您只需要检查液体是否已经存在,如果是,请添加金额。
if liquid in test_tube:
test_tube[liquid] += milliliters
else:
test_tube[liquid] = milliliters
另一种表达方法是将值设置为当前值的总和,或者将0设置为no,并且毫升:
test_tube[liquid] = test_tube.get(liquid, 0) + milliliters
请注意,您需要定义您的函数,以便它修改您传入的字典(然后您不应该真正返回任何内容),或者它返回它的修改后的副本。
答案 1 :(得分:2)
您希望将test_tube存储为传递给add_liquid()的变量。此外,如果已存在,您希望它添加到液体值。
def add_liquid(test_tube,liquid,milliliters=0):
test_tube[liquid] = test_tube.setdefault(liquid, 0) + milliters
return test_tube
test_tube = add_liquid(test_tube,'water',10)
more_water = add_liquid(test_tube,'water',5)
等
答案 2 :(得分:1)
if liquid not in test_tube.keys():
test_tube.update({liquid:milliliters})
else:
test_tube[liquid] += milliliters
答案 3 :(得分:0)
如果您只是在做计数,而您不喜欢defaultdict()
,则可以使用集合中的Counter()
对象:
>>> from collections import Counter
>>> test_tube = Counter()
>>> test_tube["water"] = 10
>>>
>>> # more water
>>> test_tube["water"] += 5
>>> test_tube["water"]
15
>>> test_tube["ethanol"] = 1
>>> test_tube
Counter({'water': 15, 'ethanol': 1})
>>>