代码之家  ›  专栏  ›  技术社区  ›  daiyue

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

  •  1
  • daiyue  · 技术社区  · 8 年前

    OrderedDict 使用相同的 int 价值,比如

    for idx in indexes:
        res_dict[idx] = value
    

    哪里 value 是一个 整数 indexes 是一个 list 属于 整数 s、 作为钥匙, res_dict 是一个 ,试图在一行中解决上述问题,

    res_dict[indexes]=value
    

    TypeError: unhashable type: 'list'
    

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

    2 回复  |  直到 8 年前
        1
  •  5
  •   tmarechaux    8 年前

    OrderedDict(以及dict)提供了方法 update 一次更新多个值。

    做你想做的事,最像蟒蛇的方式是:

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

    OrderedDict .

        2
  •  2
  •   MSeifert    8 年前

    update 你的 OrderedDict 基于新的 这是创建的 fromkeys

    来自键 订购信息和通信技术 s 它还将保持您的订单 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)])
    

    注意,如果 使现代化

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