【问题标题】:Iterate a list and add values to a dictionary迭代列表并将值添加到字典
【发布时间】:2020-05-16 17:27:36
【问题描述】:

我正在尝试创建一个字典,其中值是通过迭代列表获得的。键是元组格式 (i,j)。

例如如果 i = 3, j = 3,则键是

(1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2) , (3,3)。

如果我的清单如下,

lst = list(range(1, 10))

我如何获得这样的字典?

{(0, 0): 1, (0, 1): 2, (0, 2): 3, (1, 0): 4, (1, 1): 5, (1, 2): 6, (2, 0): 7, (2, 1): 8, (2, 2): 9}

我试过了:

dict = {(i,j): d for d in lst for i in range(1, i+1) for j in range(1, j+1)}

但我的字典的值严格来说是lst 的最后一个值。这是我的输出:

>>> {(0, 0): 9, (0, 1): 9, (0, 2): 9, (1, 0): 9, (1, 1): 9, (1, 2): 9, (2, 0): 9, (2, 1): 9, (2, 2): 9}

【问题讨论】:

  • 如果每个字典条目的值都是从key计算出来的,能否说明key和value的关系或者value是如何计算的?
  • @Kelo 列表的第一个值对应(0,0),第二个值对应(0,1),第三个对应(0,2).....基本上在这个格式 (i,j)。很抱歉,我无法从理论上解释这一点。

标签: python list loops dictionary


【解决方案1】:

如果您已经有了元组列表list_of_tuples,那么这将起作用:

d = {L:i for i,L in enumerate(list_of_tuples)}

或者如果存在一个单独的长度列表len(list_of_tuples),称为lst,那么你可以这样做

d = {L:lst[i] for i,L in enumerate(list_of_tuples)}

【讨论】:

  • 你可以这样做 dict(enumerate(list_of_tuples))
  • 酷。不知道。
  • 如果我没有元组列表怎么办?
  • 您的问题似乎暗示您确实有一个元组列表。即list_of_tuples=[(1,1), (1,2), (1,3), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3)].
猜你喜欢
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
相关资源
最近更新 更多