如何计算Python列表中多个唯一出现的唯一事件?

Nic*_*kis 3 python

假设我在Python中有一个2D列表:

mylist = [["A", "X"],["A", "X"],["A", "Y"],["B", "X"],["B", "X"],["A", "Y"]]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的"键"将是每个数组的第一个元素("A"或"B"),而我的"值"将是第二个元素("X"或"Y").在我合并结束时,输出应该合并密钥并计算每个密钥的唯一出现值,例如:

# Output
# {"A":{"X":2, "Y":2}, "B":{"X":2, "Y":1}}
Run Code Online (Sandbox Code Playgroud)

我试图使用Python的itertools.groupby,但无济于事.类似这个问题的东西.如果你有更好的方法,请告诉我.

谢谢!

L3v*_*han 13

我认为最简单的方法是使用Counter和defaultdict:

from collections import defaultdict, Counter

output = defaultdict(Counter)
for a, b in mylist:
    output[a][b] += 1
Run Code Online (Sandbox Code Playgroud)