我有一个元组,比如('key1', 'value1')
,我想将它添加到字典中,因此它就像{'key1': 'value1'}
但不会像dictionary[t[0]] = t[1]
那样。
上下文如下,我有一个类似于:
的重复规则FREQ=WEEKLY;UNTIL=20120620T233000Z;INTERVAL=2;BYDAY=WE,TH
我希望有一个像这样的词典:
recurrence = {
'freq' : 'weekly',
'until' : '20120620T233000Z',
'interval' : '2',
'byday' : 'we,th'
}
我正在做这样的事情:
for rule in recurrence.split(';'):
r = rule.split('=')
rules[r[0]] = r[1]
我根本不喜欢它。有更多的pythonic方式吗?
答案 0 :(得分:6)
使用理解:
rules.update(rule.split('=', 1) for rule in recurrence.split(';'))
这是因为dict rules
已经存在;否则使用
rules = dict(rule.split('=', 1) for rule in recurrence.split(';'))
这是有效的,因为dict
构造函数和dict.update
都接受一个产生键/值对的迭代器。
答案 1 :(得分:1)
dict
函数会将元组元组转换为键:值字典。怎么样,
t=((1,2),(3,4))
dict(t)
{1:2,3:4}
答案 2 :(得分:1)
使用字典理解:
>>> strs="FREQ=WEEKLY;UNTIL=20120620T233000Z;INTERVAL=2;BYDAY=WE,TH"
>>> dic={key: value for key, value in (rule.split("=") for rule in strs.split(";"))}
>>> print(dic)
{'BYDAY': 'WE,TH', 'FREQ': 'WEEKLY', 'INTERVAL': '2', 'UNTIL': '20120620T233000Z'}