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

时间:2016-07-08 18:50:29

标签: python

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

mylist = [["A", "X"],["A", "X"],["A", "Y"],["B", "X"],["B", "X"],["A", "Y"]]

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

# Output
# {"A":{"X":2, "Y":2}, "B":{"X":2, "Y":1}}

我正在尝试使用Python的itertools.groupby,但无济于事。与this question类似的东西。如果你有更好的方法,请告诉我。

谢谢!

2 个答案:

答案 0 :(得分:13)

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

    var arr1 = [1,2,3,4]
    var arr2 = [2,3,4,4]
    var arr3 = []
    for (i in arr1) { arr3[i] = arr1[i] + arr2[i]; }

    console.log(arr3)

答案 1 :(得分:1)

L3viathan的回答似乎更好。但是,这是另一种方法:

mylist = [["A", "X"],["A", "X"],["A", "Y"],["B", "X"],["B", "X"],["A", "Y"]]

dictionary = {"A": {"X": 0, "Y": 0}, "B": {"X": 0, "Y": 0}}
for x in mylist:
    dictionary[x[0]][x[1]] += 1