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
变量,indexes
是 int
的 list
,充当键,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
方法允许为所有键提供默认值,因此您不需要在此处进行任何显式迭代。因为它使用 OrderedDict
s 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)])
请注意,如果 OrderedDict
在 update
之前为空,您还可以使用:
>>> od = OrderedDict.fromkeys(indexes, value)
>>> od
OrderedDict([(1, 2), (2, 2), (3, 2)])
我正在尝试更新具有相同 int
值的 OrderedDict
的键列表,例如
for idx in indexes:
res_dict[idx] = value
其中 value
是一个 int
变量,indexes
是 int
的 list
,充当键,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
方法允许为所有键提供默认值,因此您不需要在此处进行任何显式迭代。因为它使用 OrderedDict
s 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)])
请注意,如果 OrderedDict
在 update
之前为空,您还可以使用:
>>> od = OrderedDict.fromkeys(indexes, value)
>>> od
OrderedDict([(1, 2), (2, 2), (3, 2)])