如何在Python中将列表转换为字典?

4

i wonder to convert 'list to dictionary'.

input :

G_list = ['BRAF\tGly464Glu', 'BRAF\tGly464Val', 'BRAF\tGly466Glu', 'BRAF\tGly466Val']

输出结果疑惑:

{'BRAF' : ['Gly464Glu', 'Gly464Val', 'Gly466Glu', 'Gly466Val']}

希望能得到任何帮助,谢谢。

5个回答

4

您可以执行以下操作:

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)

一些文档:


这将在每次迭代中创建一个新的列表对象。 - Dani Mesejo
2
一个立即被丢弃的空对象(如果未使用),因此它不会影响渐近时间或空间复杂度。 - user2390182

1

使用空格进行分割(使用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']})

1

其中一种方法:

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']})

1
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)

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

0

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))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接