내가 다르게 분석하기 위해 재검토하려고하는 JSON 개체가 있고 두 가지를 기준으로 한 필드를 집계하는 기능적 변환을 찾고 있습니다. 키 입력란.JSON 사전의 파이썬 기능 변환 길어에서 큰로
내 데이터 세트는 다음과 같습니다
myjson =
[
{
"name": "Fred",
"class": "Algebra",
"topic" : "polynomials",
"extra" : "True"
},
{
"name": "Fred",
"class": "Algebra",
"topic" : "polynomial division",
"extra" : "False"
},
{
"name": "Fred",
"class": "Algebra",
"topic" : "solving",
"extra" : "True"
},
{
"name": "Willbert",
"class": "Dance",
"topic" : "Fancy",
"extra" : "False"
},
{
"name": "Willbert",
"class": "Dance",
"topic" : "Country",
"extra" : "True"
}
]
나는 "추가"필드의 내용이 다른 주제 필드를 --- 집계에 대한 고유 키로 이름과 클래스를 사용하고 싶습니다, I 첫 번째 항목과 관련된 데이터를 유지하기 위해 모든 항목을 좋아합니다. 즉, 병합 할 필요는 없지만 하나의 레코드에서만 값을 가져와야합니다.
그래서,에 위의를 설정하고 싶습니다 :
[
{
"name": "Fred",
"class": "Algebra",
"topic" : ["polynomials","polynomial division","solving"],
"extra" : "True"
},
{
"name": "Willbert",
"class": "Dance",
"topic" : ["Fancy","Country"],
"extra" : "False"
}
]
심지어 문자열로 함께 항목을 연결 :
[
{
"name": "Fred",
"class": "Algebra",
"topic" : "polynomials polynomial division solving"
},
{
"name": "Willbert",
"class": "Dance",
"topic" : "Fancy Country"
}
]
내가
solved with groupby 전에 한 번 비슷한 질문을했다, 그러나 이것을 시작하는 방법에 대한 손실이 있습니다. 특히 이제는 하나가 아닌 두 개의 키 항목이 있기 때문에 특히 그렇습니다.
UPDATE
나는 하나의 키 날이 예에서 작동하는 시작하는 데 얻을 수...
groups = itertools.groupby(myjson,lambda x: (x['name']))
[(k,list(g)) for k,g in groups]
하지만 내 실제 데이터 세트의
혼자 '이름'충분하지 않습니다 모호성을 제거하려면 --- '이름'과 '수업'으로 그룹화해야합니다.이 작동하지 않습니다 :이 정말 필요하다 --- 2 개 그룹에 대한 키잉이 아닌 사소한 제안, 또는 다른 방법 누군가가
groups = itertools.groupby(myjson,lambda x: (x['name'],x['class']))
[(k,list(g)) for k,g in groups]
업데이트 2
Found this link solving a similar problem itertools의 기능 및 장점에 대해 더 많은 경험이 있으면 groupby를 사용하면 더 나은 점을 지적 할 수 있습니까?
이유는 무엇입니까? "여분": 결과의 첫 번째 사전에 "True"? –
데이터 세트에 키가 아니고 특별히 집계해야하는 항목도 있지만 마지막 항목으로 계속 옮겨야하는 필드가 있음을 설명하기 만하면됩니다. – Mittenchops
하지만 "이월 된"것이 아닙니다. "Fred", "Algebra"'에 대한 소스 레코드에서 언젠가는'True'가되고 때로는'False'가됩니다. 그러면 내가 선택할 가치를 어떻게 알 수 있습니까? –