如何在字典列表中获取唯一值的计数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在字典列表中获取唯一值的计数?相关的知识,希望对你有一定的参考价值。
这是我的json(词典列表)的缩写示例:
[
{
"product_type": "widget",
"id": "1744556-ghh56h-4633",
"manufacture_id": "AAB4567",
"language": "en",
"store_ids": [
416835,
456145
],
"name": "Best Widget",
"origin": "US",
"manufactured": "2018-08-26",
"uri": "https://bobswidgets.com/best_widget",
"image_uris": {
"small": "https://bobswidgets.com/small/best_widget_sm.jpg",
"normal": "https://bobswidgets.com/medium/best_widget_md.jpg",
"large": "https://bobswidgets.com/large/best_widget_lg.jpg"
},
"manufacture_cost": "12.50"
},
{
"product_type": "widget",
"id": "0956786-dje596-3904",
"manufacture_id": "BCD13D",
"language": "en",
"store_ids": [
"014329",
"40123"
],
"name": "Best Widget2",
"origin": "US",
"manufactured": "2018-10-03",
"uri": "https://bobswidgets.com/best_widget_2",
"image_uris": {
"small": "https://bobswidgets.com/small/best_widget2_sm.jpg",
"normal": "https://bobswidgets.com/medium/best_widget2_md.jpg",
"large": "https://bobswidgets.com/large/best_widget2_lg.jpg"
},
"manufacture_cost": "13.33"
}
]
我正在尝试计算几个关键值:值对的唯一值。我已经尝试过这个代码,并且它在为每个键提供计数方面做得很好,但由于计数几乎相同,所以这是非常无用的。
from collections import Counter
from itertools import chain
counts = Counter(chain.from_iterable(e.keys() for e in card_dict))
for key, count in counts.most_common():
print('{}: {}'.format(key, count))
我试过这个来获取值而不是键但是得到一个错误。 TypeError: unhashable type: 'list'
由于我在json文件中有id并且它们是唯一的,所以它也没用。
counts = Counter(chain.from_iterable(e.values() for e in card_dict))
for value, count in counts.most_common():
print('{}: {}'.format(value, count))
我想要做的是在一把钥匙上做零。例如语言键:值。我想得到那些是或不是“恩”的人。
输出将是这样的:“不是英语的实体是:”语言:12345
答案
在python中,元组是可清除的,因此你可以使用元组作为字典中的键,而且dict.items()
返回(key, value)
元组。使用这两个备注,如果您将count
更改为:
counts = Counter(chain.from_iterable(e.items() for e in card_dict))
如果某些值实际上是值列表或简单(非嵌套)字典,那么您可以在构建Counter
之前将它们转换为元组:
def tuplify(card):
if isinstance(card, list):
return tuple(card)
if isinstance(card, dict):
return tuple(card.items())
return card
card_dict = [{k: tuplify(v) for k, v in card.items()} for card in card_dict]
以上是关于如何在字典列表中获取唯一值的计数?的主要内容,如果未能解决你的问题,请参考以下文章
获取数据框中列的唯一值的计数,这些值最终出现在决策树的每个叶节点中?