#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})
Это {}
заданное понимание.