簡體   English   中英

Python:計數器輸出上的計數元素

[英]Python: Count elements on Counter output

我有一個嵌套列表:

 List1 = [[A,B,A,A],[C,C,B,B],[A,C,B,B]]..... so on

我使用counter函數來計算嵌套列表中的元素數量:

for i,j in enumerate(List1):
    print(Counter(j))

我得到以下輸出:

Counter({'A': 3, 'B': 1})
Counter({'C': 2, 'B': 2})
Counter({'B': 2, 'A': 1, 'C': 1})
....

我想計算Counter輸出中A的百分比:

A = number of A's / total number of elements

例如:

Counter({'A': 3, 'B': 1})

會產量:

A = 3/4 = 0.75

我無法計算A,有人可以幫我這個嗎?

>>> for sublist in List1:
        c = Counter(sublist)
        print(c['A'] / sum(c.values()))

0.75
0.0
0.25

所有值一次:

>>> for sublist in List1:
        c = Counter(sublist)
        s = sum(c.values())
        print(c['A'] / s, c['B'] / s, c['C'] / s)

0.75 0.25 0.0
0.0 0.5 0.5
0.25 0.5 0.25

如果要獲取子列表中具有各自百分比的所有項目的列表,則需要迭代計數器:

>>> for sublist in List1:
        c = Counter(sublist)
        s = sum(c.values())
        for elem, count in c.items():
            print(elem, count / s)
        print()

A 0.75
B 0.25

B 0.5
C 0.5

A 0.25
B 0.5
C 0.25

或者使用詞典理解:

>>> for sublist in List1:
        c = Counter(sublist)
        s = sum(c.values())
        print({ elem: count / s for elem, count in c.items() })

{'A': 0.75, 'B': 0.25}
{'B': 0.5, 'C': 0.5}
{'A': 0.25, 'B': 0.5, 'C': 0.25}

這個:

In [1]: l = [['A','B','A','A'],['C','C','B','B'],['A','C','B','B']]

In [2]: [{i: x.count(i)/float(len(x)) for i in x} for x in l]
Out[2]:
[{'A': 0.75, 'B': 0.25},
 {'B': 0.5, 'C': 0.5},
 {'A': 0.25, 'B': 0.5, 'C': 0.25}]

以下內容將為您提供一個字典列表,其中包含每個條目的計數和百分比:

List1 = [['A','B','A','A'],['C','C','B','B'],['A','C','B','B']]
counts = [Counter(x) for x in List1]
percentages = [{k : (v, v / float(len(l1))) for k,v in cc.items()} for l1, cc in zip(List1, counts)]

print percentages

給出以下輸出:

[{'A': (3, 0.75), 'B': (1, 0.25)}, {'C': (2, 0.5), 'B': (2, 0.5)}, {'A': (1, 0.25), 'C': (1, 0.25), 'B': (2, 0.5)}]

只是百分比:

List1 = [['A','B','A','A'],['C','C','B','B'],['A','C','B','B']]
counts = [Counter(x) for x in List1]
percentages = [{k : v / float(len(l1)) for k,v in cc.items()} for l1, cc in zip(List1, counts)]

print percentages

贈送:

[{'A': 0.75, 'B': 0.25}, {'C': 0.5, 'B': 0.5}, {'A': 0.25, 'C': 0.25, 'B': 0.5}]

您可以使用列表生成器和連接方法將字符列表列表連接到一行字符串列表中。

>>> List1 = [['A', 'B', 'A', 'A'],['C', 'C', 'B', 'B'],['A', 'C', 'B', 'B']]
>>> [''.join(x) for x in List1]
['ABAA', 'CCBB', 'ACBB']

然后,再次將列表連接到一個字符串。

>>> ''.join(['ABAA', 'CCBB', 'ACBB'])
'ABAACCBBACBB'

並計算'A'符號或任何其他符號。

>>> 'ABAACCBBACBB'.count('A')
4

這可能是單線解決方案:

>>> ''.join(''.join(x) for x in List1).count('A')
4

符號字符串是可迭代類型。 與列表相同。 字符串列表比字符列表列表更有用。

暫無
暫無

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

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