Python 如何以我需要的方式打印graf
我必须打印字典(邻接列表): 这样:Python 如何以我需要的方式打印graf,python,Python,我必须打印字典(邻接列表): 这样: ACATG -> CATGA, CATGT TGATT -> GATTA GGGAT -> GGATC, GGATA di = {'ACATG':{'CATGA', 'CATGT'}, 'TGATT':{'GATTA'}, 'GGGAT':{'GGATC', 'GGATA'}} for v,u in di.items(): print(v+' -> ', end="") li = [] for g in u:
ACATG -> CATGA, CATGT
TGATT -> GATTA
GGGAT -> GGATC, GGATA
di = {'ACATG':{'CATGA', 'CATGT'}, 'TGATT':{'GATTA'}, 'GGGAT':{'GGATC',
'GGATA'}}
for v,u in di.items():
print(v+' -> ', end="")
li = []
for g in u:
li.append(g)
print(g,end='')
print(',',end='')
print('')
并将其存储到.txt文件中
我试着这样打印:
di = {'ACATG':{'CATGA', 'CATGT'}, 'TGATT':{'GATTA'}, 'GGGAT':{'GGATC',
'GGATA'}}
for v,u in di.items():
print(v+' -> ', end="")
li = []
for g in u:
li.append(g)
print(g,end='')
print(',',end='')
print('')
但在每组的末尾都有一个额外的逗号:
ACATG -> CATGA,CATGT,
TGATT -> GATTA,
GGGAT -> GGATC,GGATA,
代码太长了,而且不是pythonic。我也想
将打印输出存储到文件中您可以执行以下操作:
for key, value in di.items():
print(f"{key} -> {', '.join(sorted(value))}")
我在这里使用了sorted
来强制确定顺序,因为set
s(比如{'CATGA',CATGT'}
)没有顺序,所以每次运行脚本时都可以获得具有相同数据的新顺序
此外,直到Python 3.6字典(如di
)也没有排序,因此您应该确保脚本运行在最新版本的Python上(为了安全起见),或者使用集合.OrderedDict
强制字典元素的特定顺序。您可以执行以下操作:
for key, value in di.items():
print(f"{key} -> {', '.join(sorted(value))}")
我在这里使用了sorted
来强制确定顺序,因为set
s(比如{'CATGA',CATGT'}
)没有顺序,所以每次运行脚本时都可以获得具有相同数据的新顺序
此外,直到Python 3.6字典(如di
)也没有排序,因此您应该确保脚本运行在最新版本的Python上(为了安全起见),或者使用集合.OrderedDict
强制字典元素的特定顺序。def write_-seq(di,file=None):
对于键,di.items()中的值:
值=','。连接(已排序(值))
打印(f'{key}->{value}',file=file)
非常类似于@ForceBru,但在一个函数中,因此您可以根据需要传递该文件。将其保留为默认值将写入标准输出,或者您可以这样做,例如:
with open('out.di', 'w') as fd:
write_seq(di, fd)
def write_seq(di,文件=无):
对于键,di.items()中的值:
值=','。连接(已排序(值))
打印(f'{key}->{value}',file=file)
非常类似于@ForceBru,但在一个函数中,因此您可以根据需要传递该文件。将其保留为默认值将写入标准输出,或者您可以这样做,例如:
with open('out.di', 'w') as fd:
write_seq(di, fd)
这是一条单行线:
g = {'ACATG':{'CATGA', 'CATGT'}, 'TGATT':{'GATTA'}, 'GGGAT':{'GGATC',
'GGATA'}}
print(*[f"{k} -> {', '.join(v)}" for k, v in g.items()], sep = "\n")
输出:
ACATG -> CATGT, CATGA
TGATT -> GATTA
GGGAT -> GGATC, GGATA
打印中的*
解压了我们将要创建的列表。引号前的f
表示它是一个格式字符串文本k
将是字典中的每个键,我们使用“”,”。join(v)
在每个元素之间放置逗号和空格sep=“\n”
在每个元素之间打印新行。这里是一行:
g = {'ACATG':{'CATGA', 'CATGT'}, 'TGATT':{'GATTA'}, 'GGGAT':{'GGATC',
'GGATA'}}
print(*[f"{k} -> {', '.join(v)}" for k, v in g.items()], sep = "\n")
输出:
ACATG -> CATGT, CATGA
TGATT -> GATTA
GGGAT -> GGATC, GGATA
打印中的*
解压了我们将要创建的列表。引号前的f
表示它是一个格式字符串文本k
将是字典中的每个键,我们使用“”,”。join(v)
在每个元素之间放置逗号和空格sep=“\n”
在每个元素之间打印新行