найти конкретное значение из списка dict в python - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть список словарей, подобных этому:

s = [{'a':1,'b':2},{'a':3},{'a':2},{'a':1}]

удалить дублирующую пару значений, и я хочу список словарей, таких как:

s = [{'a':1},{'a':3},{'a':2}]

Ответы [ 4 ]

2 голосов
/ 13 апреля 2020

Вы можете попробовать это.

s = [{'a':1,'b':2},{'a':3},{'a':2}]
s=[{'a':d['a']} for d in s]
# [{'a': 1}, {'a': 3}, {'a': 2}]
2 голосов
/ 13 апреля 2020

Вы можете использовать понимание списка, добавляя новые словарные записи, только если содержится 'a':

[{'a':d['a']} for d in s if 'a' in d]
# [{'a': 1}, {'a': 3}, {'a': 2}]
2 голосов
/ 13 апреля 2020

Использовать понимание списка с фильтром a:

s = [{k: v for k, v in x.items() if k =='a'} for x in s]
print (s)
[{'a': 1}, {'a': 3}, {'a': 2}]
0 голосов
/ 13 апреля 2020

Если вы хотите иметь список одноэлементных словарей только с ключами a, вы можете сделать это:

>>> [{'a': d.get('a')} for d in s]
[{'a': 1}, {'a': 3}, {'a': 2}]

Но это просто кажется более подходящим для списка кортежей:

>>> [('a', d.get('a')) for d in s]
[('a', 1), ('a', 3), ('a', 2)]

Из документов для dict.get:

Возвращает значение для ключа, если ключ находится в словаре, иначе по умолчанию. Если значение по умолчанию не задано, по умолчанию используется значение None, поэтому этот метод никогда не вызывает Key Error .

...