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

lic*_*rna 8 python

我有一个元组,就像('key1', 'value1')我要将它添加到字典中所以它就像是{'key1': 'value1'}但没有做类似的事情dictionary[t[0]] = t[1].

上下文如下,我有一个重复规则,如下所示:

FREQ=WEEKLY;UNTIL=20120620T233000Z;INTERVAL=2;BYDAY=WE,TH
Run Code Online (Sandbox Code Playgroud)

我希望有一个像这样的字典:

recurrence = {
    'freq' : 'weekly',
    'until' : '20120620T233000Z',
    'interval' : '2',
    'byday' : 'we,th'
}
Run Code Online (Sandbox Code Playgroud)

而我正在做这样的事情:

for rule in recurrence.split(';'):
    r = rule.split('=')
    rules[r[0]] = r[1]
Run Code Online (Sandbox Code Playgroud)

而且我根本不喜欢它.有更多的pythonic方式吗?

eca*_*mur 6

使用理解:

rules.update(rule.split('=', 1) for rule in recurrence.split(';'))
Run Code Online (Sandbox Code Playgroud)

这是因为dict rules已经存在; 否则使用

rules = dict(rule.split('=', 1) for rule in recurrence.split(';'))
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为dict构造函数和dict.update都接受一个产生键/值对的迭代器.

  • `.partition('=')[:: 2]`如果缺少'='有效/可能会被忽略 (4认同)