2015-11-02 45 views
-1

我有一個用\n分隔的字母表列表。在Python中將新的行分隔值從列表轉換爲字典

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實現這一目標的最佳方式是什麼?

預先感謝您。

+2

你的意思的值是列表,而不是字典? –

+0

我有一個列表中的值,如圖所示。我需要將該列表轉換爲上述給定格式的字典。 –

+1

「上面給定的格式」在語法上不是有效的。在'b:{c,d,e}'這一行中,'c','d'和'e'分別代表什麼?他們是字符串嗎?他們有價值嗎? '{c,d,e}'中的括號表示什麼?你想讓它成爲一套嗎?字典?一個列表? –

回答

5

像下面這樣的東西應該工作:

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

字典理解:

>>> 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']} 
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} 
+0

謝謝! @Greg Hewgill。 –