簡體   English   中英

Python Json 數據 同姓分組

[英]Python Json data Group it by same last name

新手來了我有一個 Json 數據,其中包含全名、年齡、國家和部門。 通過使用 python,我如何生成一個新的 Json 格式,其中姓氏作為鍵,Json 數據包含具有相同列表姓氏、年齡列表的部門總數?

Json 作為數據

{
  "John Jane": {
    "age": 30,
    "Country": "Denmark",
    "Department": "Marketing"
  },
  "Gennie Jane": {
    "age": 45,
    "Country": "New Zealand",
    "Department": "Finance"
  },
  "Mark Michael": {
    "age": 55,
    "Country": "Australia",
    "Department": "HR"
  },
  "Jenny Jane": {
    "age": 45,
    "Country": "United States",
    "Department": "IT"
  },
  "Jane Michael": {
    "age": 27,
    "Country": "United States",
    "Department": "HR"
  },
  "Scofield Michael": {
    "age": 37,
    "Country": "England",
    "Department": "HR"
  }
}

預期結果:

{
  "Michael": {
    "count": 3, // number of people that have same last name,
    "age": {
      "age1": 55,
      "age2": 27,
      "age3": 37
    },
    "Country": {
      "Country1":"Australia",
      "Country2":"United States",
      "Country3":"England"

    },
    "Department": {
      "Department1": "HR",
      "Department2": "HR",
      "Department3": "HR"

    },
    
   ...
   ...
   ...
  }
}

在我看來,對“年齡”、“國家”或“部門”使用dict是不必要的,而且更復雜,使用list應該更好。

import json

text = """{
  "John Jane": {
    "age": 30,
    "Country": "Denmark",
    "Department": "Marketing"
  },
  "Gennie Jane": {
    "age": 45,
    "Country": "New Zealand",
    "Department": "Finance"
  },
  "Mark Michael": {
    "age": 55,
    "Country": "Australia",
    "Department": "HR"
  },
  "Jenny Jane": {
    "age": 45,
    "Country": "United States",
    "Department": "IT"
  },
  "Jane Michael": {
    "age": 27,
    "Country": "United States",
    "Department": "HR"
  },
  "Scofield Michael": {
    "age": 37,
    "Country": "England",
    "Department": "HR"
  }
}"""

dictionary = json.loads(text)
result = {}
for key, value in dictionary.items():
    last_name = key.split()[1]
    if last_name in result:
        result[last_name]['count'] += 1
        result[last_name]['age'].append(value['age'])
        result[last_name]['Country'].append(value['Country'])
        result[last_name]['Department'].append(value['Department'])
    else:
        result[last_name] = {'count':1, 'age':[value['age']], 'Country':[value['Country']], 'Department':[value['Department']]}

print(result)
{'Jane': {'count': 3, 'age': [30, 45, 45], 'Country': ['Denmark', 'New Zealand', 'United States'], 'Department': ['Marketing', 'Finance', 'IT']}, 'Michael': {'count': 3, 'age': [55, 27, 37], 'Country': ['Australia', 'United States', 'England'], 'Department': ['HR', 'HR', 'HR']}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM