python检查lis中键的dictionary值是否重复

2024-05-16 10:49:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组数据,我想检查我的data中的value是否重复。
我的方法如下,我觉得有点复杂,所以我想问一下,有没有更好的方法?在

data =[
        {"name": "ali", 
         "value": "ABC" 
         },
        {"name": "bob", 
         "value": "ABC" 
         },
        {"name": "cathy", 
         "value": "ABC" 
         },
        {"name": "david", 
         "value": "ABCD" 
         },
    ]


check_list = []
duplicate_value = []
for d in data:
    if d["value"] not in check_list:
        check_list.append(d["value"]) 
    else:
        if d["value"] not in duplicate_value:
            duplicate_value.append(d["value"])


print  "You have duplicate value:", duplicate_value 

Tags: 数据方法nameindataifvaluecheck
3条回答

您可以使用^{}

>>> c = collections.Counter(d['value'] for d in data)
>>> c
Counter({'ABC': 3, 'ABCD': 1})
>>> duplicates = [k for k, n in c.most_common() if n > 1]
>>> duplicates
['ABC']
from collections import Counter

data =[
        {"name": "ali", 
         "value": "ABC" 
         },
        {"name": "bob", 
         "value": "ABC" 
         },
        {"name": "cathy", 
         "value": "ABC" 
         },
        {"name": "david", 
         "value": "ABCD" 
         },
    ]

arr = [d['value'] for d in data]

duplicate_values = [k for k, v in Counter(arr).items() if v > 1]

print('Duplicate values - ', duplicate_values)

输出-

^{pr2}$

你可以做一些简单的事情:

def has_duplicates(your_list):
    values = [item['value'] for item in your_list]

    return len(set(values)) < len(values)

def get_duplicates(your_list):
    values = [item['value'] for item in some_list]

    return [item for item in set(values) if values.count(item) > 1]

相关问题 更多 >