[英]Python transform list of dictionaries into another list of dictionaries
我在python中有一個字典列表。 這是一個有頭發顏色和種族的典型例子。
some_list = [
{'blond': 3, 'race': 'WHITE'},
{'black': 4, 'race': 'WHITE'},
{'light brown': 6, 'race': 'WHITE'},
{'black': 2, 'race': 'AFRICAN_AMERICAN'},
{'blond': 1, 'race': 'AFRICAN_AMERICAN'},
{'dark brown': 1, 'race': 'AFRICAN_AMERICAN'}
]
頭發顏色是關鍵之一,頭發顏色的值是指給定比賽的頭發顏色的人數。 我不知道有多少頭發顏色,也不知道有多少種族。 我想要將此列表轉換為包括所有種族的所有頭發顏色的計數,這樣結果將包括對於給定種族未列出的顏色的0計數:
some_list = [
{'blond': 3, 'race': 'WHITE'},
{'black': 4, 'race': 'WHITE'},
{'light brown': 6, 'race': 'WHITE'},
{'dark brown': 0, 'race': 'WHITE'},
{'black': 2, 'race': 'AFRICAN_AMERICAN'},
{'blond': 1, 'race': 'AFRICAN_AMERICAN'},
{'dark brown': 1, 'race': 'AFRICAN_AMERICAN'},
{'light brown': 0, 'race': 'AFRICAN_AMERICAN'}
]
對於我的生活,我想不出一個簡單的“蟒蛇”方式來輕松做到這一點。 當然有一個訣竅嗎? 任何人都知道一種有效的解決方法嗎?
如果我正確理解你的問題,並且你能夠使用外部庫,你可以用pandas
完成這個:
import pandas as pd
df = pd.DataFrame(some_list, index=None)
df = df.groupby(by='race').count().transpose()
for col in df.columns:
rw = df.loc[df[col] == 0]
dic = {rw.index[0]: 0, 'race': col}
some_list.append(dic)
# output:
# some_list = [
# {'blond': 3, 'race': 'WHITE'},
# {'black': 4, 'race': 'WHITE'},
# {'light brown': 6, 'race': 'WHITE'},
# {'black': 2, 'race': 'AFRICAN_AMERICAN'},
# {'blond': 1, 'race': 'AFRICAN_AMERICAN'},
# {'dark brown': 1, 'race': 'AFRICAN_AMERICAN'},
# {'light brown': 0, 'race': 'AFRICAN_AMERICAN'},
# {'dark brown': 0, 'race': 'WHITE'}
# ]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.