在python中更新多个键的值

2024-07-01 07:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

将字典中多个键的值更新为元组中存储的值的最干净的方法是什么?

示例:

我想从

>>>mydict = {'a':None, 'b':None, 'c':None, 'd':None}
>>>mytuple = ('alpha', 'beta', 'delta')

>>>print mydict
{'a':'alpha', 'b':'beta', 'c':None, 'd':'delta'}

有一个简单的班轮吗?像this这样的东西似乎越来越接近我想要的。

编辑: 我不希望根据键的第一个字母为键赋值。我只是希望

mydict('a','b','d') = mytuple

很明显那不管用,但我希望能有类似的事情发生。


Tags: 方法alphanone编辑示例字典字母this
3条回答

如果要创建新词典:

d = dict(zip(keys, valuetuple))

如果要添加到现有的,只需将=更改为.update(…)

因此,你的例子可以写成:

mydict.update(dict(zip('abd', mytuple))))

如果你不止一次这样做,我会把它包装成一个函数,这样你就可以写:

setitems(d, ('a', 'b', 'd'), mytuple)

或者一个与operator.itemgetter并行的“curried”函数?

假设关联键<;->;值是值的第一个字母,则是键的第一个字母。

dict( (v[0],v) for v in mytuple if v[0] in mydict)

你可以使用列表理解使它成为一行,尽管它不是超级有效的。

keys = [ 'a', 'b', 'c', 'd']
values = ['alpha', 'beta', 'delta']
dictionary = dict([(k,v) for k in keys for v in values if v.startswith(k)])
print dictionary #prints {'a': 'alpha', 'b': 'beta', 'd': 'delta'}

相关问题 更多 >

    热门问题