简体   繁体   English

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

[英]how to convert lists to dictionary in python?

i wonder to convert 'list to dictionary'.我想将“列表转换为字典”。

input :输入

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

wondering output :想知道输出

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

Any help would be appreciated.任何帮助,将不胜感激。 Thanks谢谢

You can do the following:您可以执行以下操作:

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)

Since this is essentially csv data (maybe coming from a file, a .csv or rather a .tsv ), you can also consider using the csv module.由于这本质上是 csv 数据(可能来自文件、 .csv或更确切地说是.tsv ),您还可以考虑使用csv模块。 The reader in particular will work on any iterable of strings:特别是reader将处理任何可迭代的字符串:

from csv import reader

d = {}
for k, v in reader(G_list, delimiter="\t"):
    d.setdefault(k, []).append(v)

Some docs:一些文档:

Split by a whitespace (using str.split ) and store the results using collections.defaultdict :用空格分割(使用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)

Output输出

defaultdict(<class 'list'>, {'BRAF': ['Gly464Glu', 'Gly464Val', 'Gly466Glu', 'Gly466Val']})

One of the approaches:方法之一:

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)

Output:输出:

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):定义转换(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'] lst = ['BRAF\\tGly464Glu'、'BRAF\\tGly464Val'、'BRAF\\tGly466Glu'、'BRAF\\tGly466Val']

print(Convert(lst))打印(转换(lst))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM