중첩 된 사전에 다른 항목을 추가하는 방법에 대해 다른 OP의 question에 응답했으며 세 개의 중첩 된 for
루프 메소드를 세 가지 수준의 사전에 항목을 추가하십시오. 작동하지만, meeeh ... 나는 그것이 더 간결하게 할 수 있다고 확신합니다. 하나의 라이너 (또는 2 개의 라이너)에서 3 레벨 중첩 사전의 스쿼시 및 합계
data = {
"2014/01/01": {
"15:00:00" : {
"ins": 7,
"outs": 5,
},
"15:10:00" : {
"ins": 24,
"outs": 10,
},
"15:20:00" : {
"ins": 10,
"outs": 20,
},
},
"2014/01/02": {
"15:00:00" : {
"ins": 10,
"outs": 10,
},
"15:10:00" : {
"ins": 12,
"outs": 5,
},
"15:20:00" : {
"ins": 5,
"outs": 10,
},
},
}
나는 그 사전을 함께에 스쿼시을 좋아하고 날짜에 관계없이 특정 시간을 그룹화 인 및 아웃을 추가 할 것입니다. " 날짜를 불문하고 각 시간 양동이에 대해 얼마나 많은 사람들이 내 자리에서 나올 수 있었는지 알고 싶습니다."또는 다른 말로 표현합니다. "얼마나 많은 인과 아웃이 있었는지 알고 싶습니다. 각 시간 버킷 시간의 시작 "그 키의 모든 dicts의 인에게 및 아웃를 추가하는 결과가 될 것입니다
하면 data
DICT에있는 시간 (첫 데이트를 무시하고있다" 레벨 ") 위에 제공된 샘플 data
을 사용하면
"15:00:00": {
"ins": 17 # (7 + 10)
"outs": 15 # (5 + 10)
},
"15:10:00": {
"ins": 36 # (24 + 12)
"outs": 15 # (10 + 5)
},
"15:20:00": {
"ins": 15 # (10 + 5)
"outs": 30 # (20 + 10)
}
어떻게 든 방법이 ... (내가 itertools을 통해 추측하고있어,하지만 난이 올바른 사람이 될 것이다 도구 모른다), data
로 시작, 결과는 하나의 위 치울의 거기에 라인 (또는 두 개)?
-
에있는 답변을 조롱했습니다하지만 내가 원하는 것을 얻을하는 방법을 알아낼 수 없습니다. 나도
Counter
개체 목록을 얻습니다. (그리고 나서 나는 그들과 무엇을해야할지 모르겠습니다.) 두 개를 추가하려고하기 때문에 오류가 발생합니다 ...
저는 실제로 크지 않습니다. deal (3 개의 for
루프는 작업을 완료합니다.)하지만이 코드의 실행 가능성과 코드 단축 방법에 대해 궁금합니다 (itertools
은 대략 시간입니다 ...)
감사합니다. 전진.
'sorted'와 ['itertools.groupby'] (https://docs.python.org/2/library/itertools.html#itertools.groupby)의 조합으로 할 수 있다고 생각하지만, 지금 당장 상세한 답변을 남길 시간이 없습니다. –
코드는 좋은 한 라이너 목록에 번역 할 수 있어야하지만 좀 길고 지저분하고 기능적으로 다르지는 않습니다. 코드를 게시할까요? – user2782067
@ user2782067, 내가 생각할 수있는 가장 좋은 점은 (음 ...'values () '를 사용할 수있을 때'keys()'를 남용하고 있었지만 실제로는 그다지 신경 쓰지는 않는다). 대답은이 질문 (이 답변 : http://stackoverflow.com/a/27217180/289011) – BorrajaX