2016-10-20 13 views
1

で複数の値のスペースに文字列を分割するには、私は、この形式のファイルで出始めています:Pythonの:どのように辞書

a ; b 
b ; c 
c ; d,e 

と私はキーがあるから、辞書で終わる必要があります矢印の左側にあり、値は右側からです。右側に複数の文字がある場合、それらは辞書の複数の値に入ります。

これは私の現在のコードです:

cleanup = [part for part in [entry.replace('\n','') for entry in myFile]] 
lefts = [part[0] for part in [entry.split(' ; ') for entry in cleanup]] 
rights = [part[1] for part in [entry.split(' ; ') for entry in cleanup]] 



myDict = defaultdict(list) 

for left, right in zip(lefts, rights): 
    myDict[left].append(right) 

と私の現在の結果:私が何をしたい明確ではありません

myDict = {'a': ['b'], 'b': ['c'], 'c': ['d,e']} 

- 私は別の値スペースにあるようにDとEを必要とし、 1つの鍵に関連付けられている、c。

ありがとうございます。

答えて

1

非常にです。 rightの側を取って、にコンマで区切ります。だから今、あなたはそれらの個々の項目をリストしている必要があります

['d', 'e'] 

をその後、代わりにappendを使用しての、extendを使用します。

for left, right in zip(lefts, rights): 
    myDict[left].extend(right.split(',') 
+1

美しい!それは完全に動作します。どうもありがとうございます!!! – Andrade

+0

@Andrade大歓迎です。 – idjaw

0

辞書のキーは一意である必要がありますので、あなたは、それを持つことができません。幸いにも、あなたはそれを必要としません。リストの一言で十分です:

>>> data = '''a ; b 
... b ; c 
... c ; d,e''' 
>>> {k: v.split(',') for k, v in [kv.split(' ; ') for kv in data.splitlines()]} 
{'a': ['b'], 'b': ['c'], 'c': ['d', 'e']} 
+0

明確にするために、彼らはdictの重複したキーを保存しようとしていませんでした。彼らは実際にあなたのソリューションが行っていることを正確にやろうとしています。 – idjaw