Найти общие значения словаря в списке словаря - python - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть один список словарей как таковой:

[{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}, {'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}, {'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}, {'Y': 82, 'X': 72, 'C': 3, 'L': 'E'}, {'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}]

разбит на части, чтобы его было легче читать

{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}

{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}

{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}

{'Y': 82, 'X': 72, 'C': 3, 'L': 'E'}

{'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}

, и я хочу найти два словаря, где 'Y' и«Х» одинаковы.Затем удалите один из двух словарей и обновите полученный «C»

{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'}

{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'}

{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'}

{'Y': 83, 'X': 73, 'C': 3, 'L': 'F'}

1 Ответ

0 голосов
/ 21 февраля 2019

Быстро и грязно:

d = [
{'Y': 80, 'X': 70, 'C': 0, 'L': 'B'},
{'Y': 81, 'X': 71, 'C': 1, 'L': 'C'},
{'Y': 82, 'X': 72, 'C': 2, 'L': 'D'},
{'Y': 82, 'X': 72, 'C': 3, 'L': 'E'},
{'Y': 83, 'X': 73, 'C': 4, 'L': 'F'}
]



Xs = [] 
Ys = []
c = 0
out = []

for i in range(len(d)):
  obj = dict(d[i]) # Copy the dict at index i
  if (obj["X"], obj["Y"]) in XYs:
    XYs.append((obj["X"], obj["Y"]))
  else:
    obj["C"] = c
    c = c + 1
    out.append(obj)
    XYs.append((obj["X"], obj["Y"]))

Редактировать: улучшено благодаря хранению уникальных кортежей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...