在删除字典列表中的重复值时遇到问题吗?

时间:2018-11-30 09:17:09

标签: python json python-3.x dictionary

我有一个像这样的字典(实际上是一个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中删除重复项?

1 个答案:

答案 0 :(得分:1)

在理解中使用setlistisinstance的组合:

>>> 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 ']}