Как правильно составить этот список понимания? - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь закодировать список, который сортирует словари, которые не являются дубликатами. Данные, с которыми я работаю, выглядят так:

[
    {
        'username': 'food_lovers_mad',
        'data': (some unique data)
    },
    {
        'username': 'oceanarmor',
        'data': (some unique data)
    },
    {
        'username': 'freediverlife',
        'data': (some unique data)
    }
]

И я сортирую словари с одинаковыми именами пользователей и добавляю их в новый список. Это мой текущий подход:

duplicates = [dup for outer in array for dup in
              [inner for inner in array
               if outer['username'] == inner['username']]]

РЕДАКТИРОВАТЬ: Пример ввода может быть:

[
    {
        'username': 'duplicate',
        'data': {
            "watches": 1241,
            "followers": 71234
        }
    },
    {
        'username': 'duplicate',
        'data': {
            "watches": 12431,
            "followers": 151
        }
    },
    {
        'username': 'not duplicate',
        'data': {
            "watches": 2124,
            "followers": 54124
        }
    }
]

, который будет производить вывод:

[
    {
        'username': 'duplicate',
        'data': {
            "watches": 1241,
            "followers": 71234
        }
    },
    {
        'username': 'not duplicate',
        'data': {
            "watches": 2124,
            "followers": 54124
        }
    }
]

I ' Я действительно сбит с толку, потому что я немного новичок в перечислении понимания в python, поэтому я был бы признателен за любую помощь!

1 Ответ

0 голосов
/ 02 апреля 2020

Вы можете использовать набор для идентификации дубликатов:

seen = set()
duplicates = [d for d in array if d["username"] in seen or seen.add(d["username"])]
...