Как рассчитать значения нескольких объектов в списке

1

Я пытаюсь добавить сумму объектов из базы данных, но пока не нашел успеха

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'

Кажется, объекты обернуты в список, но я не знаю, как его развернуть?

Теги:

6 ответов

2

Один хороший способ был бы

sum(x['shares'] for x in test)

Почему это работает?

Имея словарь d = {'shares': 7}, затем, чтобы получить значение 7, вы вызываете d['shares'].

Вы хотите сделать это для каждого словаря в test списка, поэтому вы хотите посмотреть на x['shares'] для каждого x в test.

В Python функция sum может принимать нечто, называемое "выражением генератора", что мы и сделали здесь.

  • 0
    Спасибо! Похоже, это решает все мои вопросы, особенно с учетом того, что в базе данных есть так много общих ресурсов для обработки. Спасибо!
0

Вы помещаете свои данные в list и используете их как словарь, чтобы лучше структурировать их.

{'shares': [5, 1]}.

  • 0
    Зачем понижать это? Это хорошее предложение.
  • 0
    Что делать :), а также вы можете рассчитать доли как sum(map['shares'])
0

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)
0

с приведенным ниже кодом вы можете некоторые все значения объекта, даже если он отличается

test = [{'shares': 5}, {'shares': 1}]

total = 0
for each in test:
  for i in each:
    total += each[i]

print(total)
0

У вас есть список словарей. Вы должны выбрать номер словаря из списка, а затем использовать ключ для доступа к значению, как это:

test[0]['shares']

В следующий раз вы можете легко найти его в интернете...

-2

у вас есть список "тест", вы можете получить доступ к этому списку, используя только целочисленный индекс, затем внутри списка у вас есть 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']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню