添加一个2值元组到dict作为键:值

时间:2012-06-12 16:16:01

标签: python

我有一个元组,比如('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方式吗?

3 个答案:

答案 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'}