8

我有一个元组,('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]

而且我一点也不喜欢。有没有更蟒蛇的方式呢?

4

3 回答 3

6

使用理解:

rules.update(rule.split('=', 1) for rule in recurrence.split(';'))

这是如果 dictrules已经存在;否则使用

rules = dict(rule.split('=', 1) for rule in recurrence.split(';'))

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

于 2012-06-12T16:21:59.337 回答
1

dict函数会将您的元组元组转换为键:值字典。这个怎么样,

t=((1,2),(3,4))
dict(t)
{1:2,3:4}
于 2012-06-12T16:20:43.893 回答
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'}
于 2012-06-12T16:21:45.093 回答