【问题标题】:Is there a way to self generate similar key names and values in a dictionary with a loop?有没有办法在带有循环的字典中自行生成相似的键名和值?
【发布时间】:2020-06-19 00:43:23
【问题描述】:

我想使用循环或类似技术创建字典。像下面的变量赋值是可能的。

my_dict = {v:int(v*random()) for v in range(10)}

虽然我遇到的问题是-如何为项目键生成相似的名称?下面举个例子:

{'Item-1': 1, 'Item-2':3, 'Item-3':3 ....} 

提前致谢!

【问题讨论】:

  • 键可以是任意表达式,就像值一样。您不必只使用 v 作为字典理解中的键,

标签: python dictionary-comprehension


【解决方案1】:
from random import random

my_dict = {f'item-{v+1}': int(v*random()) for v in range(10)}
print(my_dict)

输出:

{'item-1': 0, 'item-2': 0, 'item-3': 1, 'item-4': 1, 'item-5': 0, 'item-6': 3, 'item-7': 2, 'item-8': 4, 'item-9': 6, 'item-10': 2}

这使用f-string 来创建密钥,对应的值是随机生成的,就像你的问题一样。

【讨论】:

  • 非常感谢。正是我想要的。
【解决方案2】:

您也可以在字典中使用列表推导式。

from random import randint

dic = {f"item-{i}": randint(0, 10) for i in range(1, 11)}


print(dic)

【讨论】:

  • 这不是列表理解。这只是一个dict理解。您正在做的是使用 f 字符串作为键,而不仅仅是变量 i
  • 这不是他要问的吗?
【解决方案3】:

创建键和值并循环添加到my_dict

my_dict = {}

for v in range(10): my_dict[f'Item-{v}'] = v

print(my_dict)

{'Item-0': 0, 'Item-1': 1, 'Item-2': 2, 'Item-3': 3, 'Item-4': 4, 'Item-5': 5, 'Item-6': 6, 'Item-7': 7, 'Item-8': 8, 'Item-9': 9}

【讨论】:

  • 我为什么要分配 'v = np.arrange(0,10,1)' ?我不能只分配'my_dict[key] = v'吗?上述解决方案对我来说很长,这就是为什么我要求更快的方法。仍然感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
相关资源
最近更新 更多