0

私はPythonの初心者ですが、次のことは可能ですか? 入っている液体とその量を示す辞書、test_tube を作成したいと考えています。関数 add_liquid を使用して、defaultdicts を使用せずに、新しい液体または以前に使用した液体を試験管に追加したいと考えています。

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 内の液体の量を何らかの方法で記憶する必要があります。アドバイスをいただければ幸いです。

4

4 に答える 4

5

私があなたの質問を正しく理解していれば、液体がすでに入っているかどうかを確認し、入っている場合はその量を追加してください。

if liquid in test_tube:
    test_tube[liquid] += milliliters
else: 
    test_tube[liquid] = milliliters

これを定式化する別の方法は、値を現在の値の合計に設定するか、存在しないの 0 とミリリットルに設定することです。

test_tube[liquid] = test_tube.get(liquid, 0) + milliliters

渡された辞書を変更するように関数を定義する必要があることに注意してください (実際には何も返すべきではありません)。または、変更されたコピーを返します。

于 2012-11-20T00:09:57.343 に答える
2

add_liquid() に渡す変数として test_tube を保存します。また、すでに存在する場合は、液体の値に追加する必要があります。

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)

于 2012-11-20T00:10:06.883 に答える
1

あなたは次のようなものが欲しいでしょう:

if liquid not in test_tube.keys():
    test_tube.update({liquid:milliliters})
else:
    test_tube[liquid] += milliliters
于 2012-11-20T00:10:51.897 に答える
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})
>>>
于 2012-11-20T01:40:01.433 に答える