代码之家  ›  专栏  ›  技术社区  ›  JAG2024

获取元组列表的值

  •  1
  • JAG2024  · 技术社区  · 6 年前

    我很熟悉怎么回去 value_counts 从警局的序列中。但是,如何从字典中的元组列表中获取值计数?

    假设我的字典里有下列元组 L :

    L = {1: (13600, 14797),
     2: (14700, 14700),
     3: (14700, 10400),
     4: (14600, 17200),
     5: (13600, 14797),
     6: (14600, 17200),
     7: (14700, 10400),
     8: (14700, 10400),
     9: (12800, 14770)}
    

    我如何从 L 看起来像是:

    (14700, 10400) 3
    (13600, 14797) 2
    (14600, 17200) 2
    (14700, 14700) 1
    (12800, 14770) 1
    

    这就是我目前所拥有的。但是我认为字典键1-9妨碍了我,因为我得到了错误 list object is not callable.

    list = [(k, v) for k, v in L.items()] 
    S = set(L)
    F = {}
    for i in list(S):
        F[i] = list.count(i)
    
    4 回复  |  直到 6 年前
        1
  •  6
  •   Mad Physicist    6 年前

    使用 collections.Counter 以下内容:

    Counter(L.values())
    
        2
  •  2
  •   snowneji    6 年前

    也许是用 from collections import Counter 是个好主意吗?

    from collections import Counter 
    dict(Counter([j for i,j in L.items()]))
    
        3
  •  2
  •   Sultan Singh Atwal    6 年前

    你可以试试这个:

    L = {1: (13600, 14797),
         2: (14700, 14700),
         3: (14700, 10400),
         4: (14600, 17200),
         5: (13600, 14797),
         6: (14600, 17200),
         7: (14700, 10400),
         8: (14700, 10400),
         9: (12800, 14770)}
    vals = [ v for v in L.values()]
    counts = []
    for i in vals:
        counts.append((i, vals.count(i)))
    set(counts)
    
        4
  •  2
  •   Quang Hoang    6 年前

    你提到 pandas.Series.value_counts() ,你为什么不试试

    pd.Series(L).value_counts()
    

    它给出:

    (14700, 10400)    3
    (14600, 17200)    2
    (13600, 14797)    2
    (12800, 14770)    1
    (14700, 14700)    1
    dtype: int64