繁体   English   中英

Python-检查列表重复项

[英]Python - Check for list duplicates

我在python中有一个这样的列表

my_list = [{'1':'A','2':'B'}]

现在,我想向my_list附加一些JSON ,但首先我要检查要添加的JSON是否已存在,我该如何处理?

因此,如果我要追加{'2':'B','1':'A'} ,那么是否不添加?

我该怎么办?

谢谢

您可以检查两个字典是否==

In [2]: {'1':'A','2':'B'}=={'2':'B','1':'A'}
Out[2]: True

因此,要检查my_list是否存在JSON ,您只需执行以下操作

if JSON in my_list:
    #blahblah

更新:

要将set与数据一起使用,可以定义自己的子类并实现__hash__()方法。 您可以从这里开始:

class MyJSON(dict):
    def __hash__(self):
        return hash(json.dumps(self,sort_keys=True))

例:

a=MyJSON({'1':'A','2':'B'})
b=MyJSON({'1':'A','2':'C'})
c=MyJSON({'2':'B','1':'A'}) ## should be equal to a
print a==c # should be True
my_set=set()
my_set.add(a)
my_set.add(b)
my_set.add(c)
for item in my_set:
    print item,
## output is {'1': 'A', '2': 'C'} {'1': 'A', '2': 'B'}

用于避免重复的规范数据结构是set 如前所述,您无法执行此操作,因为您将在集合中添加dict ,这是不可哈希的。

这个通常的解决方法是要么定义自定义dict般的对象可哈希,或冻结您的字典弄成可哈希并添加到组。 我们将做后者。

my_list = [{1:2, 3:4}, {3:4, 1:2}]
result = set()

for json_data in my_list:
    result.add(frozenset(json_data.items()))

print(result)
# {frozenset({(1, 2), (3, 4)})}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM