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”
在每个元素之间打印新行