python OrderedDict 更新具有相同值的键列表

python OrderedDict update a list of keys with the same value

我正在尝试更新具有相同 int 值的 OrderedDict 的键列表,例如

for idx in indexes:
    res_dict[idx] = value

其中 value 是一个 int 变量,indexesintlist,充当键,res_dict是一个OrderedDict,试图在一行中解决上面的问题,

res_dict[indexes]=value

但是出现错误:

TypeError: unhashable type: 'list'

循环或列表理解是执行此更新的唯一方法吗?

OrderedDict(还有 dict)提供了 update 一次更新多个值的方法。

做您想做的事情的最 pythonic 方式是:

res_dict.update((idx, value) for idx in indexes)

它会保留您OrderedDict的原始顺序。

你可以update your OrderedDict based on a new OrderedDict that's created fromkeys

fromkeys 方法允许为所有键提供默认值,因此您不需要在此处进行任何显式迭代。因为它使用 OrderedDicts fromkeys 它也会保持你的 indexes:

的顺序
>>> from collections import OrderedDict
>>> indexes = [1, 2, 3]
>>> value = 2
>>> od = OrderedDict([(0, 10), (1, 10)])
>>> od.update(OrderedDict.fromkeys(indexes, value))  # that's the interesting line
>>> od
OrderedDict([(0, 10), (1, 2), (2, 2), (3, 2)])

请注意,如果 OrderedDictupdate 之前为空,您还可以使用:

>>> od = OrderedDict.fromkeys(indexes, value)
>>> od
OrderedDict([(1, 2), (2, 2), (3, 2)])