Я пытаюсь добавить сумму объектов из базы данных, но пока не нашел успеха
test = [{'shares': 5}, {'shares': 1}]
# print sum of the two shares (5+1=6)
Я пытался использовать test['shares']
для печати, но это приводит к ошибке:
индексы списка должны быть целыми числами или ломтиками, а не str
Я пробовал sum(test.value())
но создает ошибку
Объект 'list' не имеет атрибута 'values'
И sum(test)
создает:
неподдерживаемые типы операндов для +: 'int' и 'dict'
Кажется, объекты обернуты в список, но я не знаю, как его развернуть?
Один хороший способ был бы
sum(x['shares'] for x in test)
Почему это работает?
Имея словарь d = {'shares': 7}
, затем, чтобы получить значение 7
, вы вызываете d['shares']
.
Вы хотите сделать это для каждого словаря в test
списка, поэтому вы хотите посмотреть на x['shares']
для каждого x
в test
.
В Python функция sum
может принимать нечто, называемое "выражением генератора", что мы и сделали здесь.
Вы помещаете свои данные в list
и используете их как словарь, чтобы лучше структурировать их.
{'shares': [5, 1]}
.
sum(map['shares'])
test
это список. Вы хотите получить доступ к его элементам по индексу:
print(test[0]['shares'] + test[1]['shares'])
Или, если у вас много объектов в этом списке:
print(sum( x['shares'] for x in test ))
Или же
s = 0;
for elm in test:
s += elm['shares']
print(s)
с приведенным ниже кодом вы можете некоторые все значения объекта, даже если он отличается
test = [{'shares': 5}, {'shares': 1}]
total = 0
for each in test:
for i in each:
total += each[i]
print(total)
У вас есть список словарей. Вы должны выбрать номер словаря из списка, а затем использовать ключ для доступа к значению, как это:
test[0]['shares']
В следующий раз вы можете легко найти его в интернете...
у вас есть список "тест", вы можете получить доступ к этому списку, используя только целочисленный индекс, затем внутри списка у вас есть 2 словаря, вы можете получить доступ к их значению с помощью ключа "доли":
test = [{'shares': 5}, {'shares': 1}]
sum = test[0]['shares'] + test[1]['shares']
print(sum)
выход:
6
или лучше вы можете перебрать список:
sum = 0
for item in test:
sum += item['shares']