How do I convert this LIST data structure to DICTIONARY. I want it in a key/value format.
['FREQ=WEEKLY', 'INTERVAL=2', 'UNTIL=20170511T050000Z', 'BYDAY=MO,TU,WE,TH,FR,SA,SU', 'RDATE:20170224T060000Z', 'EXDATE:20170228T060000Z']
How do I convert this LIST data structure to DICTIONARY. I want it in a key/value format.
['FREQ=WEEKLY', 'INTERVAL=2', 'UNTIL=20170511T050000Z', 'BYDAY=MO,TU,WE,TH,FR,SA,SU', 'RDATE:20170224T060000Z', 'EXDATE:20170228T060000Z']
Here is sample code with work with both symbols =
and :
:-
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'}
The easiest way to split on multiple delimiters is probably 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)
Just split the string and put them in dict:
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
Output:
{'BYDAY': 'MO,TU,WE,TH,FR,SA,SU', 'INTERVAL': '2', u'RDATE': '20170224T060000Z', 'EXDATE': '20170228T060000Z', 'FREQ': 'WEEKLY', 'UNTIL': '20170511T050000Z'}