辞書結合値の追加
ゲームデータを統計的に集計する場合、毎日いくつかのデータが辞書に保存されます。複数日を集計したい場合は、辞書を結合する必要があります。
キーが同じ場合、その値が加算されます。
update メソッドを使用すると、同じキーの値が追加されずに上書きされるため、update メソッドは使用できません。
千の言葉は一ヤードの価値があります。この文は理解しにくいかもしれません。
実際、sum() 関数には「あまり知られていないパラメーター」もあります。つまり、2 番目のパラメーターである開始パラメーターであり、デフォルトは 0 です。
これを使用すると、2 層の配列を 1 つの層に平坦化できます。
例:def union_dict(*objs): _keys = set(sum([obj.keys() for obj in objs],[])) _total = {} for _key in _keys: _total[_key] = sum([obj.get(_key,0) for obj in objs]) return _total obj1 = {'a':1,'b':2,'c':3} obj2 = {'a':1,'b':3,'d':4} print union_dict(obj1,obj2)
バックパックの収納構造がこんな感じだとします。
は辞書、{item id:quantity}です。
バックパッククラスを初期化するとき、いくつかのアイテム操作(アイテムの使用、アイテム報酬の受け取りなど)を実行した後、save()メソッドを呼び出してredisに保存するときに、バックパックアイテム情報をoldbag変数にコピーして保存します。 the new Bag 辞書と oldbag 辞書の違いを比較して、変更点を取得します。
千の言葉は一ヤードの価値があります。
{'a': 2, 'c': 3, 'b': 5, 'd': 4}
>>sum([[1,2,3],[4,5]],[]) [1,2,3,4,5]