首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据列表-获取重复的数量

数据列表-获取重复的数量
EN

Stack Overflow用户
提问于 2021-04-27 12:03:37
回答 2查看 43关注 0票数 0

我有一个list of dicts (相同格式),如下所示:

代码语言:javascript
复制
L =  [
        {'id': 1, 'name': 'john', 'age': 34},
        {'id': 1, 'name': 'john', 'age': 34},
        {'id': 2, 'name': 'hanna', 'age': 30},
        {'id': 2, 'name': 'hanna', 'age': 30},
        {'id': 3, 'name': 'stack', 'age': 40}
    ]

我想删除复制,得到这样的复制数量

代码语言:javascript
复制
[
    {'id': 1, 'name': 'john', 'age': 34, 'duplication': 2},
    {'id': 2, 'name': 'hanna', 'age': 30, 'duplication': 2},
    {'id': 3, 'name': 'stack', 'age': 40, 'duplication': 1}
]

我已经通过使用set.删除了复制.但我不知道复制的数量

我的代码:

代码语言:javascript
复制
no_duplication = [dict(s) for s in set(frozenset(d.items()) for d in L)]
            
no_duplication =  [
                   {'id': 1, 'name': 'john', 'age': 34},
                   {'id': 2, 'name': 'hanna', 'age': 30},
                   {'id': 3, 'name': 'stack', 'age': 40}
                  ]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-27 12:24:59

这里有一个解决方案,您可以尝试使用collections.Counter

代码语言:javascript
复制
from collections import Counter

print([
    {**dict(k), "duplicated": v}
    for k, v in Counter(frozenset(i.items()) for i in L).items()
])

代码语言:javascript
复制
[{'age': 34, 'duplicated': 2, 'id': 1, 'name': 'john'},
 {'age': 30, 'duplicated': 2, 'id': 2, 'name': 'hanna'},
 {'age': 40, 'duplicated': 1, 'id': 3, 'name': 'stack'}]
票数 1
EN

Stack Overflow用户

发布于 2021-04-27 12:25:11

代码语言:javascript
复制
 ar = [
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 1, 'name': 'john', 'age': 34},
    {'id': 2, 'name': 'hanna', 'age': 30},
    {'id': 2, 'name': 'hanna', 'age': 30},
    {'id': 3, 'name': 'stack', 'age': 40}
]

br = []
cnt = []

for i in ar:
    if i not in br:
        br.append(i)
        cnt.append(1)
    else:
        cnt[br.index(i)] += 1

for i in range(len(br)):
    br[i]['duplication'] = cnt[i]

期望的输出包含在br中,如下所示:

代码语言:javascript
复制
[
 {'id': 1, 'name': 'john', 'age': 34, 'duplication': 2}, 
 {'id': 2, 'name': 'hanna', 'age': 30, 'duplication': 2}, 
 {'id': 3, 'name': 'stack', 'age': 40, 'duplication': 1}
]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67282708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档