Удалить дубликаты в словаре Python - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть список словарей в Python, и я хотел бы переопределить старое значение с повторяющимся значением. Пожалуйста, дайте мне знать, как я могу это сделать.

{'message': [{'name': 'raghav', 'id': 10}, {'name': 'raghav', 'id': 11}]}

Вывод должен быть:

{'message': [ {'name': 'raghav', 'id': 11}]}

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Я не знаю, что вы подразумеваете под "переопределить старое значение дублирующимся значением". Если вы имеете в виду просто выбор второго dict из списка, вы можете:

print({k: [v[1]] for (k, v) in data.items()})

Если идея состоит в том, чтобы обновлять «имя» с более новым значением «id» при перемещении по списку, то возможно:

def merge_records(data):
    records = data['message']
    users = {}
    for record in records:
        name = record['name']
        id_ = record['id']
        users[name] = id_
    new_records = []
    for name, id_ in users.items():
        new_records.append({'name': name, 'id': id_})
    return {'message': new_records}

Но , если у вас есть какой-либо контроль над представлением данных, вы можете пересмотреть. Возможно, вам нужна другая структура данных.

0 голосов
/ 04 сентября 2018

Вот, пожалуйста:

d = {'message': [{'name': 'raghav', 'id': 10}, {'name': 'raghav', 'id': 11}]}
#loop over outer dictionary
for key, value in d.items():
    d[key] = [dict([t for k in value for t in k.items()])]
    print(d)

Edit:

Согласно вашему требованию:

d = {'message': [ {'name': 'raghav', 'id': 11}, {'name': 'krish', 'id': 20}, {'name': 'anu', 'id': 30}]}
for key, value in d.items():
    print [dict((k1,v1)) for k1,v1 in dict([tuple(i.items()) for i in value for val in i.items()]).items()] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...