【问题标题】:Use variables indexed from a list as a key in a dictionary [duplicate]使用从列表中索引的变量作为字典中的键[重复]
【发布时间】:2022-01-20 14:17:36
【问题描述】:
a1 = 2
a2 = 4
a3 = 5
xa1 = 0
xa2 = 0
xa3 = 0
d = {a1 : xa1, a2 : xa2}
l1 = [a1, a2]
for item in l1:
  d[item] += item

在这段代码中,我希望a1 的值在xa1 中,a2xa2 中,但不是xa3

我尝试这样做,但这可能不是正确的方法。我这样做的方法不正确,所以如果有其他方法,请帮助我。

(注意有 81 个变量,如 a1、a2 等,以及 81 个如 xa1、xa2 等,它们是随机选择的,以从 'a' 变量中复制值)

我希望我没有弄得一团糟,人们能理解我想说的话。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请收下tour 并阅读help center,如果您有任何问题,请在Meta Stack Overflow 上提问:)
  • 不要创建一堆不同的变量,而是使用a = [2, 4, 5]xa = [0, 0, 0]。现在您可以将a 的子集复制到xa,例如xa[0:2] = a[0:2]!
  • 当您从变量创建字典时,字典只是获取变量值,而不是对变量的引用。所以更新字典对变量没有任何影响。
  • @Barmar 哦,是的,我想这就是发生的事情,直到最后一步我都这样做了,但是当我使用变量 xa1 而不是字典引用时,它只是给出了我的原始值(即它为 0)。谢谢!
  • @Samwise 是的,现在我想起来了,这样做会容易得多。谢谢!

标签: python list dictionary


【解决方案1】:

试试

for item in l1: d[item] = item

我从 += 项中删除了 +,因为我认为您正在尝试更新 xa* 值

【讨论】:

  • 这和问题里的代码是一样的。
  • 他写的不是很好,但我认为他实际上是在尝试设置变量xa1xa2,而不是更新字典。
  • 我的错,现在检查一下,我只放了一小部分,所以我必须写更多才能发布,当我复制更大的部分时,我忘了替换它
  • 您应该解释您所做的更改以及为什么它会解决问题。不要只是发布代码
  • 你应该把它放在答案中,而不是评论中。并解释你为什么这样做。
猜你喜欢
  • 2018-10-29
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 2013-11-25
  • 2023-03-27
相关资源
最近更新 更多