在默认字典中保留相同的值
Keep identical values in default dict
我有以下两个列表:
prefix = ['AGG', 'CAG', 'CAG', 'GAG', 'GGA', 'GGG', 'GGG']
suffix = ['GGG', 'AGG', 'AGG', 'AGG', 'GAG', 'GGA', 'GGG']
我正在尝试使用 defaultdict 来获得这个结果:
AGG -> GGG
CAG -> AGG,AGG
GAG -> AGG
GGA -> GAG
GGG -> GGA,GGG
(是的,对于那些知道的人来说,这是一个 Rosalind 问题。不过我真的很想学习如何有效地使用词典,所以我不是在寻找作业答案。只是词典帮助。)
这是我的代码:
from collections import defaultdict
nodes = defaultdict(set)
for pre, suf in zip(prefix, suffix):
nodes[pre].add(suf)
for k,v in nodes.items():
print(k,v)
这是我的结果:
CAG {'AGG'}
GAG {'AGG'}
GGG {'GGG', 'GGA'}
AGG {'GGG'}
GGA {'GAG'}
所以我有两个问题:
1) 我需要将 AGG(CAG 的值)保存为两个相同的实例。
2) 我不知道如何从我的字典中很好地打印出来,没有括号和引号,也没有添加箭头。
提前致谢!
使用 list
的 defaultdict
,而不是 set
。集删除重复项。
你的代码已经很好了,你只需要更改
nodes[pre].add(suf)
到
nodes[pre].append(suf)
印刷的话会像
print('{} -> {}'.format(k, ','.join(v)))
我有以下两个列表:
prefix = ['AGG', 'CAG', 'CAG', 'GAG', 'GGA', 'GGG', 'GGG']
suffix = ['GGG', 'AGG', 'AGG', 'AGG', 'GAG', 'GGA', 'GGG']
我正在尝试使用 defaultdict 来获得这个结果:
AGG -> GGG
CAG -> AGG,AGG
GAG -> AGG
GGA -> GAG
GGG -> GGA,GGG
(是的,对于那些知道的人来说,这是一个 Rosalind 问题。不过我真的很想学习如何有效地使用词典,所以我不是在寻找作业答案。只是词典帮助。)
这是我的代码:
from collections import defaultdict
nodes = defaultdict(set)
for pre, suf in zip(prefix, suffix):
nodes[pre].add(suf)
for k,v in nodes.items():
print(k,v)
这是我的结果:
CAG {'AGG'}
GAG {'AGG'}
GGG {'GGG', 'GGA'}
AGG {'GGG'}
GGA {'GAG'}
所以我有两个问题:
1) 我需要将 AGG(CAG 的值)保存为两个相同的实例。
2) 我不知道如何从我的字典中很好地打印出来,没有括号和引号,也没有添加箭头。
提前致谢!
使用 list
的 defaultdict
,而不是 set
。集删除重复项。
你的代码已经很好了,你只需要更改
nodes[pre].add(suf)
到
nodes[pre].append(suf)
印刷的话会像
print('{} -> {}'.format(k, ','.join(v)))