2017-02-27 11 views
-4

このLISTデータ構造をDICTIONARYに変換するにはどうすればよいですか。私はキー/値形式でそれをしたい。リストをDictに変換する

['FREQ=WEEKLY', 'INTERVAL=2', 'UNTIL=20170511T050000Z', 'BYDAY=MO,TU,WE,TH,FR,SA,SU', 'RDATE:20170224T060000Z', 'EXDATE:20170228T060000Z'] 
+2

ので(http://stackoverflow.com/questions/4576115/convert-a-list-to-a-dictionary-in-python)[Pythonで辞書にリストを変換] – aavrug

+1

の可能性のある重複あなたの要素のいくつかは '='によって区切られますが、他のものは ':'によって区切られます。 –

+0

あなたのリストには似たような要素がありませんでした。 –

答えて

0

は単なる文字列を分割し、辞書に入れ:

l=['FREQ=WEEKLY', 'INTERVAL=2', 'UNTIL=20170511T050000Z', 'BYDAY=MO,TU,WE,TH,FR,SA,SU', 'RDATE:20170224T060000Z', 'EXDATE:20170228T060000Z'] 
d={} 
for i in l: 
    if "=" in i: 
     d[i.split("=")[0]]=i.split("=")[1] 
    elif ":" in i: 
     d[i.split(":")[0]] = i.split(":")[1] 
    else: 
     pass 
print d 

出力:

{'BYDAY': 'MO,TU,WE,TH,FR,SA,SU', 'INTERVAL': '2', u'RDATE': '20170224T060000Z', 'EXDATE': '20170228T060000Z', 'FREQ': 'WEEKLY', 'UNTIL': '20170511T050000Z'} 
+0

私はあなたが 'str.partition' –

1

ここで両方のシンボル=:と仕事のサンプルコードである: -

は、
a = ['FREQ=WEEKLY', 'INTERVAL=2', 'UNTIL=20170511T050000Z', 'BYDAY=MO,TU,WE,TH,FR,SA,SU', 'RDATE:20170224T060000Z', 'EXDATE:20170228T060000Z'] 


print {spi[0]:spi[1] for spi in [item.split("=") if "=" in item else item.split(":") for item in a]} 

output: {'BYDAY': 'MO,TU,WE,TH,FR,SA,SU', 'EXDATE': '20170228T060000Z', 'FREQ': 'WEEKLY', 'INTERVAL': '2','RDATE': '20170224T060000Z','UNTIL': '20170511T050000Z'} 
1

複数の区切り文字で分割する最も簡単な方法はおそらくre.splitです。

import re 
data = ['FREQ=WEEKLY', 'INTERVAL=2', 'UNTIL=20170511T050000Z', 'BYDAY=MO,TU,WE,TH,FR,SA,SU', 'RDATE:20170224T060000Z', 'EXDATE:20170228T060000Z'] 
result = dict(re.split('=|:', line, 1) for line in data) 
関連する問題