【问题标题】:Finding the number of different dict elements in a list of dict in python在python中的dict列表中查找不同dict元素的数量
【发布时间】:2022-01-19 10:18:35
【问题描述】:

我已经得到了一个字典列表,假设

L = [
  {'color':'R', 'rank':2},
  {'color':'G', 'rank':1},
  {'color':'G', 'rank':2}, 
  {'color':'R', 'rank':2}, 
  {'color':'Y', 'rank':4}, 
  {'color':'G', 'rank':2}
]

我需要找到列表中不同 dict 项的计数,即 {'color':'R', 'rank':2} 有 2 个计数,{'color':'G', 'rank':2} 有 2 个计数等。提前致谢。

【问题讨论】:

  • 请在提问前尝试解决问题。无论如何,通过简单的谷歌搜索回答你的问题会给你L.count({"color": "R", "rank": 2})

标签: python python-3.x dictionary


【解决方案1】:

有很多方法可以做到这一点。我喜欢在这里使用 pandas,因为字典列表可以很容易地表示为数据框:

import pandas as pd
pd.DataFrame(L).groupby(["color", "rank"]).size()

另一种方式是:

from collections import Counter
Counter([f"{d['color']}_{d['rank']}" for d in L])
>>> Counter({'R_2': 2, 'G_1': 1, 'G_2': 2, 'Y_4': 1})

dicts 不可散列,因此我们需要将 dict 转换为可散列的东西,例如字符串,因此是 f-string。

【讨论】:

    【解决方案2】:

    我会努力的:

    x = dict()
    for element in L:
      if element['color'] in x:
        x[element['color']]+=1
      else:
        x[element['color']]=1
    

    x 你应该有计数。

    【讨论】:

    • 感谢您的回答,请问如果存在 2 个相同类型的元素,我该如何取回 dict 元素。在我的情况下,我想创建一个新列表 cards = [] 并将其附加到列表 L 中出现两次的 dict 元素,即 {'color':'R', 'rank':2}, {'color': 'G', 'rank':2}, 应该附加到我的新列表cards.append(xxxx)
    • 您的代码将所有“G”元素视为相同,其中一个为 1 级,另外两个为 2 级''
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多