Я получил словарь, как показано ниже:

a = [('Ma', [128.35226732698018]), ('Ta', [56.42857142857143]), ('Eg', [46.35428571428572]), ('Ky', [41.6177429876057])]

Вот что я хотел бы вывести:

Ma (128.35)
Ta (56.43)
Eg (46.35)
Ky (41.62)

Как я могу избавиться от списка и кортежа и изменить номер на float:2f?

-4
loki 29 Авг 2017 в 16:53

4 ответа

Лучший ответ
a = [('Ma', [128.35226732698018]), ('Ta', [56.42857142857143]), ('Eg', [46.35428571428572]), ('Ky', [41.6177429876057])]

for k in a:

    print(k[0], '{:.2f}'.format(k[1][0]))
3
Joe 29 Авг 2017 в 13:58

Вы можете распаковать значения и округлить:

a = [('Ma', [128.35226732698018]), ('Ta', [56.42857142857143]), ('Eg', [46.35428571428572]), ('Ky', [41.6177429876057])]

for name, [value] in a:
    print(name, "({})".format(round(value, 2)))

Окончательный результат:

Ma (128.35)
Ta (56.43)
Eg (46.35)
Ky (41.62)
1
Ajax1234 29 Авг 2017 в 14:03

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

a = [('Ma', [128.35226732698018]), ('Ta', [56.42857142857143]), ('Eg', [46.35428571428572]), ('Ky', [41.6177429876057])]

for k, v in a:
    print('{} ({:.2f})'.format(k, *v))

Выходы:

Ma (128.35)
Ta (56.43)
Eg (46.35)
Ky (41.62)

Как утверждает @ Ajax1234, распаковка , выполняемая оператором *, работает только с Python 3. Если вы используете Python 2, вы можете заменить *v на v[0]. Обратите внимание, что последний работает с обоими.

3
Ev. Kounis 29 Авг 2017 в 14:13
a = [('Ma', [128.35226732698018]), ('Ta', [56.42857142857143]), ('Eg', [46.35428571428572]), ('Ky', [41.6177429876057])]
[print(elem[0],'('+str(round(elem[1][0],2))+')') for elem in a]

Как насчет понимания списка?

0
whackamadoodle3000 29 Авг 2017 в 23:12