2017-07-20 21 views
-3

私は次のように文字列のリストを持っている:「:」私はで文字列を分割して辞書を形成したいPythonの:リスト内の分割文字列とフォーム辞書

e = ['Website: Alabama Office of the Attorney General', 
'Toll Free: 1-800-392-5658', 
'Website: State Banking Department', 
'Toll Free: 1-866-465-2279', 
'Website: Department of Insurance', 
'Phone Number: 334-241-4141', 
'Website: Securities Commission', 
'Phone Number: 334-242-2984', 
'Website: Public Service Commission', 
'Toll Free: 1-800-392-8050'] 

との各二つの要素の辞書を形成しますリストは次のようになります:

e = [{'Website': 'Alabama Office of the Attorney General', 
'Toll Free': '1-800-392-5658'}, 
{'Website': 'State Banking Department', 
'Toll Free': '1-866-465-2279'}, 
{'Website': 'Department of Insurance', 
'Phone Number': '334-241-4141'}, 
{'Website': 'Securities Commission', 
'Phone Number': 334-242-2984'}, 
{'Website': 'Public Service Commission', 
'Toll Free': '1-800-392-8050'}] 

いつものようにあなたの助けをありがとう。

+0

あなたはそれがリストになりたいのはなぜ? –

+2

問題を解決するためにこれまでに試したことをお見せしてください。どこで立ち往生しましたか? –

+2

[so]はコード作成サービスではありませんので、[ask]を確認して、あなたが試したことをお見せください。 – TemporalWolf

答えて

0

辞書を使用する場合は、2行につきです。あなたは使用することができます。

ei = iter(e) 
[{k:v for k,v in (x.split(':',1) for x in xs)} for xs in zip(ei,ei)] 

生成:

>>> [{k:v for k,v in (x.split(':',1) for x in xs)} for xs in zip(ei,ei)] 
[{'Website': ' Alabama Office of the Attorney General', 'Toll Free': ' 1-800-392-5658'}, {'Website': ' State Banking Department', 'Toll Free': ' 1-866-465-2279'}, {'Website': ' Department of Insurance', 'Phone Number': ' 334-241-4141'}, {'Website': ' Securities Commission', 'Phone Number': ' 334-242-2984'}, {'Website': ' Public Service Commission', 'Toll Free': ' 1-800-392-8050'}] 

またはそれ以上、フォーマット:

>>> [{k:v for k,v in (x.split(':',1) for x in xs)} for xs in zip(ei,ei)] 
[{'Website': ' Alabama Office of the Attorney General', 'Toll Free': ' 1-800-392-5658'}, 
{'Website': ' State Banking Department', 'Toll Free': ' 1-866-465-2279'}, 
{'Website': ' Department of Insurance', 'Phone Number': ' 334-241-4141'}, 
{'Website': ' Securities Commission', 'Phone Number': ' 334-242-2984'}, 
{'Website': ' Public Service Commission', 'Toll Free': ' 1-800-392-8050'}] 

をあなたはにしたい場合は、我々はstrip()を使用することができ、値にスペースを削除します。

ei = iter(e) 
[{k:v.strip() for k,v in (x.split(':',1) for x in xs)} for xs in zip(ei,ei)] 

辞書あたりn行がある場合は、私たちが使用することができます。

n = 2 
ei = iter(e) 
[{k:v for k,v in (x.split(':',1) for x in xs)} for xs in zip(*((ei,)*n))] 
+0

ウェブサイト、電話番号、そしてフリーダイヤル番号がないことをどのように知っていますか? –

+0

@CoryMadden:簡単に一般化することができます。それに取り組む。 –

+0

@CoryMadden:modified :) –

-1
# Assumption : Total 2*n entries are present 
ans = [] 
for i in xrange(0, len(e), 2): 
    website = e[i].strip().split(':') 
    toll = e[i+1].strip().split(':') 
    ans.append({website[0]:website[1], toll[0]:toll[1]}) 
+0

ありがとう、Ankur –

関連する問題