[英]Python: efficient counting number of unique values of a key in a list of dictionaries
[英]Python : Counting unique values in list
我正在嘗試將列表中相等值的數量相加。 該列表如下所示:
list = [["APP", "X", "v3", "CN_L", "2"],
["APP2", "X", "v3", "CN_M", "2"],
["APP3", "Z", "v3", "CN_L", "2"],
["APP2", "Z", "v3", "CN_M", "2"]]
等等
我主要關心找到第 4 個字段的次數。
我對 Python 不是很有經驗。 我已經找到了一些關於 Counter 的東西,並用它嘗試了一些東西。
from collections import Counter
list = [["APP", "X", "v3", "CN_L", "2"],
["APP2", "X", "v3", "CN_M", "2"],
["APP3", "Z", "v3", "CN_L", "2"],
["APP2", "Z", "v3", "CN_M", "2"]]
distinct_list=(Counter(list).keys())
如果沒有 for 循環,我從這段代碼中什么也得不到,並且得到了一個不可散列的類型。 誰能把我推向正確的方向?
使用[l[3] for l in my_list]
獲取索引 3 處的元素(第 4 個元素),然后只需在列表中調用Counter
即可為您提供唯一元素及其計數。
from collections import Counter
my_list = [["APP", "X", "v3", "CN_L", "2"],
["APP2", "X", "v3", "CN_M", "2"],
["APP3", "Z", "v3", "CN_L", "2"],
["APP2", "Z", "v3", "CN_M", "2"]]
forth_elts = [l[3] for l in my_list]
print(Counter(forth_elts))
>>> Counter({'CN_M': 2, 'CN_L': 2})
並且請避免使用關鍵字和其他詞,例如“str”或“list”來命名變量。
from collections import Counter
new_list = [["APP", "X", "v3", "CN_L", "2"],
["APP2", "X", "v3", "CN_M", "2"],
["APP3", "Z", "v3", "CN_L", "2"],
["APP2", "Z", "v3", "CN_M", "2"]]
#import numpy library
import numpy as np
#convert the list into a numpy array
arr=np.array(new_list)
#take the 4 th column and then apply the counter
result=Counter(arr[:,4])
我會將數據放入 pandas Dataframe 中,如下所示:
import pandas as pd
df = pd.DataFrame(
[["APP", "X", "v3", "CN_L", "2"],
["APP2", "X", "v3", "CN_M", "2"],
["APP3", "Z", "v3", "CN_L", "2"],
["APP2", "Z", "v3", "CN_M", "2"]]
)
df[4].value_counts()
->
2 4
Name: 4, dtype: int64
它會返回一個 pandas 系列,它基本上像字典一樣工作,所以你可以這樣做:
x = df[4].value_counts()
x["2"] --> 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.