更改列表输出python中的元组

时间:2017-08-29 13:53:38

标签: python list tuples

我收到了如下字典:

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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

以下使用值解包字符串格式化,这些都非常重要,可以了解:

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,则可以用{{1}替换*v }}。请注意,后者适用于两者。

答案 2 :(得分:1)

您可以解压缩值并进行舍入:

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)

答案 3 :(得分:0)

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]

列表理解如何。