我有一个像这样的字典(实际上是一个json):
[
{
"val": "regards",
"example": ["kind regards","regards", "kind regards"]
},
{
"val": "Greets",
"example": ["Hello ","Hi","Hello", "Hello"]
}
]
如何删除example
键中重复的字符串?我试图:
在:
def remove_dups(a_dict):
return {k:sorted(set(j),key=j.keys) for k,j in a_dict.items()}
with open('../a_json.json','r') as fa:
a = json.load(fa)
pprint(list(map(remove_dups,a)))
出局:
[
{
"val": ['r','e','g','a','r','d','s'],
"example": ["regards", "kind regards"]
},
{
"val": ['G','r','e','e','t','s'],
"example": ["Hi","Hello"]
}
]
尽管如此,val
键被转换为字符串列表。我如何才能离开val
而只从example
中删除重复项?
答案 0 :(得分:1)
在理解中使用set
和list
与isinstance
的组合:
>>> d
{'val': 'Greets', 'example': ['Hello ', 'Hi', 'Hello', 'Hello']}
>>> {k: list(set(v)) if isinstance(v, list) else v for k, v in d.items()}
{'val': 'Greets', 'example': ['Hello', 'Hi', 'Hello ']}