如何删除一个值,如果它在json中重复不止一次?



我有一个json在下面

a = {"infinity_war":["Stark", "Hulk", "Rogers", "Thanos"],
"end_game":["Stark", "Dr.Strange", "Peter"]}

既然名字"Stark"在整个json中重复不止一次,我只需要保留一个"Stark"然后把其他的移走。我尝试使用熊猫,但它需要所有的列表具有相同的长度。还有别的办法吗?我需要的结果是

a = {"infinity_war":["Stark", "Hulk", "Rogers", "Thanos"],
"end_game":["Dr.Strange", "Peter"]}

您可以使用一个简单的循环和一个集合来跟踪看到的元素:

seen = set()
b = {}
for k,l in a.items():
b[k] = [x for x in l if not (x in seen or seen.add(x))]

输出:

{'infinity_war': ['Stark', 'Hulk', 'Rogers', 'Thanos'],
'end_game': ['Dr.Strange', 'Peter']}

工作原理:

对于每个键/列表对,遍历列表的元素。

seen.add(x)总是False,因为set.add返回None,因此(x in seen or seen.add(x))具有布尔值x in seen,我们将其与not反转。

最新更新