Pythonic way to convert a list into dictionary
Here is a simple Python code that converts a list into a dictionary.
Now I am looking for more Pythonic way to do this task. Any ideas?
def list_to_dict(li):
dct = {}
for item in li:
if dct.has_key(item):
dct[item] = dct[item] + 1
else:
dct[item] = 1
return dct
li = [1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 4, 5, 6, 7, 7]
print list_to_dict(li)
Now I am looking for more Pythonic way to do this task. Any ideas?
Comments
dict([i, li.count(i)] for i in li)
>>> l = [1,1,1,1,2,2,2,3,3,4]
>>> from collections import Counter
>>> f = Counter(l)
>>> f
Counter({1: 4, 2: 3, 3: 2, 4: 1})
from collections import defaultdict
dct=defaultdict(int)
for i in li: dct[i]+=1
but this is certainly an antidiom:
if dct.has_key(item) #no no
if item in dct #YES
Andreas
def list_to_dict(li):
dct = {}
for item in li:
dct[item] = dct.get(item,0) + 1
return dct
li = [1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 4, 5, 6, 7, 7]
print list_to_dict(li)
You can use the get method cleaner.
def list_to_dict(li):
dct = {}
for item in li:
dct[item] = dct.get(item,0) + 1
return dct
li = [1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 4, 5, 6, 7, 7]
print list_to_dict(li)
Now how can I convert this list into dictionary
My expected output is:
{"a" : "b", "c" : "d", "e" : "f"}
Can anyone help me out???
d = {}
for item in list1:
k,v = item.split(":")
k = k.strip(" ")
v = v.strip(" ")
d[k] = v
assert d == {"a" : "b", "c" : "d", "e" : "f"}
e.g l = [1,1,1,1,2,2,2,2,3,4,5,5]
and my dictionary will output
numbers in the dictionary :5