Python — Группировка по словам

#python #dictionary #python-3.5

#python #словарь #python-3.5

Вопрос:

Я использую Python 3.5, и у меня есть следующий массив dic:

 d1 = [{id=1, col="name", oldvalue="foo", newvalue="bar"}, {id=1, col="age", oldvalue="25", newvalue="26"}, {id=2, col="name", oldvalue="foo", newvalue="foobar"}, {id=3, col="age", oldvalue="25", newvalue="26"}]

d2 = [{id=1, col="name", oldvalue="foo", newvalue="bar"}, {id=1, col="age", oldvalue="25"]

d3 = [{id=3, col="age", oldvalue="25", newvalue="26"}]
 

Как вы можете видеть, он показывает некоторые изменения, внесенные в определенные «строки».

Я хочу знать, есть ли способ вернуть общее количество обновленных строк, поэтому:

 def counting_updates(d):
    # ...
    return total

print counting_updates(d1) # prints 3 because 3 rows were updated
print counting_updates(d2) # prints 1 because 1 row was updated
print counting_updates(d3) # prints 1 because 1 row was updated
 

Комментарии:

1. Являются id ли s строками или col s?

2. Каждая строка является словарем, а идентификатор будет первичным ключом

3. используйте понимание списка: sum(item['oldvalue'] != item['newvalue'] for item in d)

Ответ №1:

Если вы ищете количество уникальных id s, то

 len({row['id'] for row in d})
 

Это {} заданное понимание.