I는 다음과 같습니다 dicts의 목록을 가지고 :그룹화 데이터
[{TYPE, OBJECT_ID, ACTOR, EXTRA_FIELDS}, ...]
나는 통과하고 {TYPE, OBJECT_ID}의 중복 집계 배우 a를하고 싶습니다 그래서 목록 :
시작으로 :
[ {'type': 'LOVE', 'obj_id': 1242, 'actor': 'bob', {..}},
{'type': 'LOVE', 'obj_id': 1242, 'actor': 'dave', {..}},
{'type': 'FAV', 'obj_id': 1242, 'actor': 'sam', {..}},
{'type': 'LOVE', 'obj_id': 242, 'actor': 'bob', {..}}]
끝을 위로 :
[ {'type': 'LOVE', 'obj_id': 1242, 'actor': ['bob', 'dave'], {..}},
{'type': 'FAV', 'obj_id': 1242, 'actor': ['sam'], {...}},
{'type': 'LOVE', 'obj_id': 242, 'actor': ['bob'], {...}} ]
,
EXTRA_FIELDS는 병합 할 필요가 없으며 집계 된 항목 중 하나의 데이터 만 사용할 수 있습니다.
어떻게 이것을 파이썬으로 할 수 있습니까? 하나 - 라이너를 좋아하는 경우에 input
이 튜플 (하지 세트), 무엇을,
TYPE= 0
OBJECT_ID= 1
ACTOR= 2
EXTRA_INFO= 3
keys= set([ (e[TYPE] , e[OBJECT_ID]) for e in input ])
output= { k: [ (e[ACTOR] , e[EXTRA_INFO]) for e in input if (e[TYPE] , e[OBJECT_ID]) == k ] for k in keys }
에 대한 또는 목록이라고 가정
그 객체 리터럴은하지 마십시오
나중에 컬렉션을 반복 할 거라면 당신이 바로 루프에서 튜플 (심지어 중첩 된 것들) 압축을 풀 수 있기 때문에,이 방법은 매우 쉽다 의미가 있습니다. 그들은 리터럴입니다. '{a, b}'는 (a와 b가 정의되었다고 가정하면)'set ([a, b])'를 제공 할 것이다. – FakeRainBrigand
실제 데이터를 게시하십시오. –
당신의 구문은 매우 생소합니다. 예를 들어 {TYPE, OBJECT_ID, ACTOR, EXTRA_FIELDS}는 무엇입니까? - 파이썬에서 그 세트는 그렇지만 당신이 그렇게 생각하지 않는다고 생각합니까? –