使用 python 计算唯一值并按频率缩放

using python to count unique values and scale by frequency

我有一个如下所示的数据集:

[
    {'A':'0'},
    {'B':'0'}, 
    {'C':'1'}
]

我想将其转换成如下所示的数据集:

[
    {'0':'2'},
    {'1':'1'}
]

本质上任务是计算值,

并且对于每个唯一值

在数据结构中创建一个新条目

对于这些唯一条目中的每一个(再次基于值)

增加相应的条目,

基本上,该任务是统计我们看到的唯一值的所有次数,然后将其放大表示该值的次数。

在 python 中最高效、最有效的方法是什么?

我一直在尝试使用计数器,但到目前为止收效甚微,因为我的基本数据结构似乎不兼容,代码库如下所示:

dict_hash_gas = list()
for line in inpt:
    resource = json.loads(line)
    dict_hash_gas.append({resource['first']:resource['second']})

和这样的数据集:

{"first":"A","second":"0","third":"2"} 
{"first":"B","second":"0","third":"2"} 
{"first":"C","second":"1","third":"2"} 
result = dict()

for name, value in input.items():
    result.update({value: result.get(value, 0) + 1})

您可以很容易地使用 Counter

>>> data = [
...     {'A':'0'},
...     {'B':'0'},
...     {'C':'1'}
... ]
>>> import collections
>>> counts = collections.Counter(v for d in data for v in d.values())
>>> counts
Counter({'0': 2, '1': 1})

现在,要获得您想要的最终列表,只需:

>>> [{k:v} for k,v in counts.items()]
[{'0': 2}, {'1': 1}]

尽管我不知道您为什么 想要 这样的列表,但我只能假设一些基于 REST 的 API 期待一些 JSON 那种格式...