我有一个由\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中实现这一目标的最佳方法是什么?
提前谢谢你。
答案 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}