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

在Python中将列表中的新行分隔值转换为字典,python,list,python-2.7,dictionary,Python,List,Python 2.7,Dictionary,我有一个由\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中实现这一点的最佳方法是什么 先谢谢你 类似于以下内容的操作应该有效: {x[0]: set(x[1:]) for x in map(str.split, mylist)} 听写理解: >>> m

我有一个由\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中实现这一点的最佳方法是什么


先谢谢你

类似于以下内容的操作应该有效:

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

>>> 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']}
鉴于:

您可以使用集合的dict:

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}

你是说这些值是列表,而不是字典吗?我把这些值放在一个列表中,如图所示。我需要将该列表转换为上述给定格式的词典。上述给定格式在语法上无效。在b:{c,d,e}行中,c,d和e代表什么?它们是弦吗?它们是价值观吗?{c,d,e}中的括号代表什么?你想要一套吗?口述?列表?这就是我的意思,youre bracketing建议您希望每个键的值指向dicts,但是没有键-值对,看起来就像您希望它们是列表一样。这就是我的答案,我需要它作为字典,而不是列表。这将用于图形。所以,在b:{c,d,e},c,d和e是值,b是键。谢谢@格雷格·休吉尔。
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}