【问题标题】:How to count multiple unique occurrences of unique occurrences in Python list?python - 如何计算Python列表中唯一出现的多次唯一出现?
【发布时间】:2016-11-11 10:16:56
【问题描述】:

假设我在 Python 中有一个二维列表:

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 的东西。如果您有更好的方法,请告诉我。

谢谢!

【问题讨论】:

    标签: python


    【解决方案1】:

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

    from collections import defaultdict, Counter
    
    output = defaultdict(Counter)
    for a, b in mylist:
        output[a][b] += 1
    

    【讨论】:

    • 特别是,groupby 要求对输入进行排序。这是最好的方法。
    • 您能否添加如何获取未出现元素的计数?
    • @J.C.Rocamonde output["A"]["Z"] 将评估为 0。
    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2011-05-12
      相关资源
      最近更新 更多