i wonder to convert 'list to dictionary'.
input :
G_list = ['BRAF\tGly464Glu', 'BRAF\tGly464Val', 'BRAF\tGly466Glu', 'BRAF\tGly466Val']
输出结果疑惑:
{'BRAF' : ['Gly464Glu', 'Gly464Val', 'Gly466Glu', 'Gly466Val']}
希望能得到任何帮助,谢谢。
i wonder to convert 'list to dictionary'.
input :
G_list = ['BRAF\tGly464Glu', 'BRAF\tGly464Val', 'BRAF\tGly466Glu', 'BRAF\tGly466Val']
输出结果疑惑:
{'BRAF' : ['Gly464Glu', 'Gly464Val', 'Gly466Glu', 'Gly466Val']}
希望能得到任何帮助,谢谢。
您可以执行以下操作:
d = {}
for s in G_list:
k, v = s.split("\t")
# k, v = s.split("\t", 1) # if the value might contain more tabs
d.setdefault(k, []).append(v)
由于这基本上是 csv 数据(可能来自文件,一个 .csv
或者宁愿是 .tsv
),你也可以考虑使用 csv
模块。 特别地,reader
可以在任何字符串的可迭代对象上工作:
from csv import reader
d = {}
for k, v in reader(G_list, delimiter="\t"):
d.setdefault(k, []).append(v)
一些文档:
使用空格进行分割(使用str.split
),并使用collections.defaultdict
存储结果:
from collections import defaultdict
G_list = ['BRAF\tGly464Glu', 'BRAF\tGly464Val', 'BRAF\tGly466Glu', 'BRAF\tGly466Val']
d = defaultdict(list)
for key, value in map(str.split, G_list):
d[key].append(value)
print(d)
输出
defaultdict(<class 'list'>, {'BRAF': ['Gly464Glu', 'Gly464Val', 'Gly466Glu', 'Gly466Val']})
其中一种方法:
from collections import defaultdict
G_list = ['BRAF\tGly464Glu', 'BRAF\tGly464Val', 'BRAF\tGly466Glu', 'BRAF\tGly466Val']
out = defaultdict(list)
for item in G_list:
data = item.split('\t')
out[data[0]].append(data[1])
print (out)
输出:
defaultdict(<class 'list'>, {'BRAF': ['Gly464Glu', 'Gly464Val', 'Gly466Glu', 'Gly466Val']})
G_list = ['BRAF\tGly464Glu', 'BRAF\tGly464Val',
'BRAF\tGly466Glu', 'BRAF\tGly466Val']
d={ }
for s in G_list :
u, v = s.spilt("\t")
d.setdefault(u, [ ]).append(v)
Print(d)
def Convert(lst):
res_dct = {lst[i]: lst[i + 1] for i in range(0, len(lst), 2)}
return res_dct
lst = ['BRAF\tGly464Glu', 'BRAF\tGly464Val', 'BRAF\tGly466Glu', 'BRAF\tGly466Val']
print(Convert(lst))
lst = ['BRAF\tGly464Glu', 'BRAF\tGly464Val', 'BRAF\tGly466Glu', 'BRAF\tGly466Val']
print(Convert(lst))