首页 > 解决方案 > 用大括号代替括号python加入二维列表

问题描述

我想将 python 输出提供给乳胶脚本,但乳胶用大括号定义二维数组,python 使用括号。所以我希望从 python 打印输出,但将括号转换为大括号!

例如:在二维列表下方打印:

mylst = [[1,2],[3,4],[5,6]]
print(mylst)

输出

[[1, 2], [3, 4], [5, 6]]

我怎样才能得到一个带大括号的字符串,如下所示:

{{1,2},{3,4},{5,6}}

标签: python

解决方案


print并不完全“输出字符串”,而是将所提供表达式的字符串表示形式写入标准输出。通常这与执行后得到的结果相同,s = str(<some expression>)但绝对不是总是如此,尤其是对于更复杂的类型。

如果您只想创建一个看起来像您的示例的字符串并打印它,您可以使用如下函数执行某些操作:

def list_in_braces(xs):
    return f'{{{",".join(str(x) if not isinstance(x, list) else list_in_braces(x) for x in xs)}}}'


mylst = [[1,2],[3,4],[5,6]]
print(list_in_braces(mylst))

其中,如果 f 字符串令人困惑:

def list_in_braces(xs):
    return '{' + ','.join(str(x) if not isinstance(x, list) else list_in_braces(x) for x in xs) + '}'

您也可以执行@Chris 在评论中建议的操作,但这有一些其他限制和陷阱(例如,值中的其他任何地方都不能有括号):

print(str(mylst).replace('[', '{').replace(']', '}'))

但是你会在其中得到空格,因为这就是 Python 打印列表的方式。To 也可以去掉这些:

print(str(mylst).replace('[', '{').replace(']', '}').replace(' ',''))

我的口味有点乱。请注意,在列表上使用花括号通常不是一个好主意,因为它提醒 Python 程序员注意集合或字典,而许多其他程序员也期望像字典这样的东西,所以我不确定你为什么首先需要它...


推荐阅读