Я пытаюсь добавить значения в моем кортеже, чтобы получить общую цифру с кодом ниже

Black = (("Hans","100"),("Frank","20.5"))

for v in Black:
    print(v[1])
    print (v[1]+v[1])

Но когда я делаю это таким образом, это объединяет значения, такие как 100100, а не общий показатель значений

0
LAS 14 Мар 2018 в 19:24

2 ответа

Лучший ответ

У вас есть два варианта:

1) Снять кавычки со значений в кортеже:

Black = (("Hans",100),("Frank",20.5))
for v in Black:
       print(v[1])
       print (v[1]+v[1])

2) Преобразовать строки, чтобы плавать во время цикла:

Black = (("Hans","100"),("Frank","20.5"))
for v in Black:
       print(v[1])
       print (float(v[1])+float(v[1]))

3) Если ваша цель - сумма всех значений индекса [1] в вашем списке списков:

Black = (("Hans",100),("Frank",20.5))
sum([x[1] for x in Black])
2
dfundako 14 Мар 2018 в 16:42

Вот один из способов:

Black = (("Hans","100"),("Frank","20.5"))

res = sum(float(num) for name, num in Black)
# 120.5

Альтернативный метод с использованием zip:

res = sum(map(float, list(zip(*Black))[1]))
# 120.5
0
jpp 14 Мар 2018 в 16:32