0
def sum_specified_dims(mdd, dims, keys = [], result = {}):
for key,value in mdd.items():
keys.append(key)
if type(value) == dict:
sum_specified_dims(value, dims, keys, result)
else:
pointer = result
for dim in dims:
index = dim - 1
key_value = keys[index]
if not key_value in pointer:
pointer[key_value] = {}
pointer = pointer[key_value]
if key_of_sum in pointer:
pointer[key_of_sum] += value
else:
pointer[key_of_sum] = value
keys.pop()
return result
key_of_sum='total'
keys=[1]
import datetime
mdd={datetime.date(2013, 7, 16): {3.0: {'2.0': 8}}}
>>> sum_specified_dims(mdd,keys)
{datetime.date(2013, 7, 16): {'total': 8}}
>>> sum_specified_dims(mdd,keys)
{datetime.date(2013, 7, 16): {'total': 16}}
>>> sum_specified_dims(mdd,keys,[],{})
{datetime.date(2013, 7, 16): {'total': 8}}
3 번째, 4 번째 매개 변수를 생략하면 매번 누적됩니다.결과가 매번 변경되는 이유는 무엇입니까?
매개 변수를 생략하지 않더라도 괜찮습니다.
누구나 이런 일이 일어날 수 있는지 설명 할 수 있습니다. 파이썬 버그입니까?
UPDATE
항상없는 것 같다 일이 :
>>> def f(a=2):
... print a
...
>>> f(3)
3
>>> f()
2
@Blender, 나는 그것이 발생하지 않을 때 예제를 제공했다. – user2559257
정수는 불변이고 목록과 사전은 변경할 수 있습니다. 그것은 모두 연결된 질문에 설명되어 있습니다. – Blender
@ user2559257 : 그럴 경우 기본 인수를 변경하지 않았습니다. –