【问题标题】:Assigning ordered scalars to keys of a dictionary将有序标量分配给字典的键
【发布时间】:2013-07-09 09:15:53
【问题描述】:

我正在尝试将整数 1,2,..., N 分配给字典的键。每个键是一个 4 维向量;所以我应该将数字 1,...,N 分配给 (i,j,k,l) 形式的键。这似乎是一项微不足道的工作;我想我已经住了一夜,我的大脑不工作了。我真的很感谢你的帮助。

【问题讨论】:

  • dict((key, index) for index, key in enumerate(the_sequence_of_keys, start=1))?相关:stackoverflow.com/questions/17513890/…(注意:在 python2.7 和 python3 中,您还可以使用 dict-comprehension:{key: index for index, key in enumerate(sequence_of_i_j_k_l, start=1)})。
  • 你想创建像{(1,2,3,4):1, (2,3,4,5):2, ....., (n,n+1,n+2,n+3):n}这样的字典吗?
  • i,j,k,l 和字典中的值有什么关系吗?否则,如果您只是想“枚举”这些键,我之前的评论已经解决了您的问题。
  • @Bakuriu:实际上,没有。我需要做的就是为字典的每个键分配一个唯一编号。
  • @NNsr 我的评论已经提供了一个解决方案,因为每个键都有不同的值。插入具有唯一值的新键也很容易,因为您可以跟踪插入的最大值。如果你想使用随机数,那么你应该有一个used_ids = set() 并跟踪使用的值。

标签: python dictionary


【解决方案1】:
>>> x = dict()
>>> x[(1,2,3,4)] = 1
>>> x
{(1, 2, 3, 4): 1}

效果很好……

请注意,字典不保证顺序。

【讨论】:

    【解决方案2】:

    如果要创建字典{(1,2,3,4):1, (2,3,4,5):2, ....., (n,n+1,n+2,n+3):n}

    >>> N = 4
    >>> {(i,i+1,i+2,i+3):i for i in range(1, N+1)}
    {(2, 3, 4, 5): 2, (1, 2, 3, 4): 1, (4, 5, 6, 7): 4, (3, 4, 5, 6): 3}
    

    【讨论】:

      猜你喜欢
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 2019-04-02
      • 2019-01-23
      • 2021-07-27
      • 2012-07-17
      • 1970-01-01
      相关资源
      最近更新 更多