从字符串创建列表的dict [英] create a dict of lists from a string

查看:112
本文介绍了从字符串创建列表的dict的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将一个字符串(例如'a = b,a = c,a = d,b = e')转换成列表{'a':['b','c','d' ],'b':['e']}在Python 2.6。



我目前的解决方案是这样的:

  def merge(d1,d2):
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(',')]))
pre>

我相信这是不必要的复杂的。



任何更好的解决方案?

解决方案

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆