在Python中将新行分隔值从列表转换为字典

时间:2015-11-02 21:28:31

标签: python list python-2.7 dictionary

我有一个由\n分隔的字母列表。

mylist = ['a\n','b c d e\n', 'f g h i j\n', 'k l m\n', 'n o\n', 'p q r s\n', 't\n', 'u v w x y z\n'] 

我想将其转换为格式字典:

mydict= {
a: {}
b: {c, d, e}
f: {g, h, i, j}
k: {l, m}
n: {o}
p: {q, r, s}
t: {}
u: {v, w, x, y, z}
}

在Python中实现这一目标的最佳方法是什么?

提前谢谢你。

3 个答案:

答案 0 :(得分:5)

以下内容应该有效:

{x[0]: set(x[1:]) for x in map(str.split, mylist)}

答案 1 :(得分:1)

dict comprehension:

>>> mydict = {x[0]:x[1:].strip().split() for x in mylist}
>>> mydict
{'p': ['q', 'r', 's'], 'n': ['o'], 'f': ['g', 'h', 'i', 'j'], 'a': [], 't': [], 'u': ['v', 'w', 'x', 'y', 'z'], 'b': ['c', 'd', 'e'], 'k': ['l', 'm']}

答案 2 :(得分:0)

假设:

mylist = ['a\n','b c d e\n', 'f g h i j\n', 'k l m\n', 'n o\n', 'p q r s\n', 't\n', 'u v w x y z\n']

你可以使用集合的字典:

mydict={}
for e in mylist:
    li=e.split()
    mydict[li[0]]=set(li[1:])

>>> mydict
{'a': set([]), 'b': set(['c', 'e', 'd']), 'f': set(['i', 'h', 'j', 'g']), 'k': set(['m', 'l']), 'n': set(['o']), 'p': set(['q', 's', 'r']), 'u': set(['y', 'x', 'z', 'w', 'v']), 't': set([])}

如果你想要你的确切格式:

>>> print '\n'.join(['{}: {}'.format(k, '{{{}}}'.format(', '.join(list(v)))) for k, v in mydict.items()]) 
a: {}
p: {q, s, r}
b: {c, e, d}
u: {y, x, z, w, v}
t: {}
f: {i, h, j, g}
k: {m, l}
n: {o}