How to convert this list to a dictionary in Python?

I have a list like this:

paths = [['test_data', 'new_directory', 'ok.txt'], ['test_data', 'reads_1.fq'], ['test_data', 'test_ref.fa']] 

I want to convert this to a dictionary as follows:

 {'test_data': ['ok.txt', 'reads_1.fq'], 'test_data/new_directory', ['ok.txt']} 

The list is dynamic. The purpose of this is to create a simple tree structure. I want to do this using itertools as follows:

 from itertools import izip i = iter(a) b = dict(izip(i, i)) 

Is something like this possible? Thanks

+7
source share
2 answers

Yes, maybe use collections.defaultdict :

 >>> from collections import defaultdict >>> dic = defaultdict(list) >>> lis = [['test_data', 'new_directory', 'ok.txt'], ['test_data', 'reads_1.fq'], for item in lis: key = "/".join(item[:-1]) dic[key].append(item[-1]) ... >>> dic defaultdict(<type 'list'>, {'test_data': ['reads_1.fq', 'test_ref.fa'], 'test_data/new_directory': ['ok.txt']}) 

using a simple dict :

 >>> dic = {} >>> for item in lis: key = "/".join(item[:-1]) dic.setdefault(key, []).append(item[-1]) ... >>> dic {'test_data': ['reads_1.fq', 'test_ref.fa'], 'test_data/new_directory': ['ok.txt']} 
+4
source

can also try this,

 list1=['a','b','c','d'] list2=[1,2,3,4] 

we want to pin these two lists and create the dict_list dictionary

 dict_list = zip(list1, list2) dict(dict_list) 

this will give:

 dict_list = {'a':1, 'b':2, 'c':3, 'd':4 } 
+15
source

All Articles