从字符串创建列表的dict [英] create a dict of lists from a string
本文介绍了从字符串创建列表的dict的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我目前的解决方案是这样的:
def merge(d1,d2):
pre>
for k,v in d2.items():
if k in d1:
if type
d1 [k] =列表(d1 [k])
d1 [k] .append(v)
else:
d1 [k] = list(v)
return d1
record ='a = b,a = c,a = d,b = e'
print reduce(merge,map(dict,[[x.split('=')] for x in record.split(',')]))
我相信这是不必要的复杂的。
任何更好的解决方案?
解决方案
d = {}
for i in'a = a = c,a = d,b = e'.split(,):
k,v = i.split(=)
d.setdefault(k,[])。 (v)
print d
或者,如果你使用python> 2.4,你可以使用 defaultdict
from collections import defaultdict
d = defaultdict(list)
for i in'a = b,a = c,a = d,b = e'.split (,):
k,v = i.split(=)
d [k] .append(v)
打印d
I want to convert a string such as 'a=b,a=c,a=d,b=e' into a dict of lists {'a': ['b', 'c', 'd'], 'b': ['e']} in Python 2.6.
My current solution is this:
def merge(d1, d2): for k, v in d2.items(): if k in d1: if type(d1[k]) != type(list()): d1[k] = list(d1[k]) d1[k].append(v) else: d1[k] = list(v) return d1 record = 'a=b,a=c,a=d,b=e' print reduce(merge, map(dict,[[x.split('=')] for x in record.split(',')]))
which I'm sure is unnecessarily complicated.
Any better solutions?
解决方案d = {} for i in 'a=b,a=c,a=d,b=e'.split(","): k,v = i.split("=") d.setdefault(k,[]).append(v) print d
or, if you're using python > 2.4, you can use defaultdict
from collections import defaultdict d = defaultdict(list) for i in 'a=b,a=c,a=d,b=e'.split(","): k,v = i.split("=") d[k].append(v) print d
这篇关于从字符串创建列表的dict的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文