【问题标题】:Creating python dictionaries using for loop使用for循环创建python字典
【发布时间】:2022-01-14 04:51:00
【问题描述】:

我制作了一堆我想存储在 python dictionaries 中的矩阵,并且我总是发现自己为每个要构建的 state 输入相同的内容,即

Ne21_1st_state = {}
Ne21_2nd_state = {}
Ne21_3rd_state = {}
Ne21_4th_state = {}
Ne21_5th_state = {}
Ne21_6th_state = {}
...
Ne21_29th_state = {}
Ne21_30th_state = {}

有人可以帮助我使用 python for loops 自动执行此操作吗?
提前致谢!

我想要这样的东西:

for i in range(3, 11):
    states = f'Ar36_{i}th_state'
    print(states)

输出的位置:

Ar36_3th_state
Ar36_4th_state
Ar36_5th_state
Ar36_6th_state
Ar36_7th_state
Ar36_8th_state
Ar36_9th_state
Ar36_10th_state

但不是打印它,而是创建名为Ar36_3th_stateAr36_4th_stateAr36_5th_state、...

【问题讨论】:

标签: python loops dictionary


【解决方案1】:

我们不能制作一个字典列表

30 个(或任意 N 个)元素的列表,其中每个元素都是具有 key = "Ar36_{i}th_state" 和 value 的字典> = {你想要的任何值}

【讨论】:

  • 是的,这就是我想要完成的。只有当我知道如何编码时...
  • 以你为榜样 - lst = [] for i in range(3, 11): state = 'Ar36_' + str(i) + 'th_state' lst.append({'key' : state, 'value': i})
【解决方案2】:

您可以创建伪变量的“名称”并将其用作字典中的键,例如:

my_dic = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
my_empty_dic = {}

solution = {}

for i in range(1, 31):
    name = 'Ne21_'+str(i)+'st_state'

    #solution[name] = my_dic
    solution[name] = my_empty_dic

for pseudo_variable in solution:
    print(pseudo_variable, solution[pseudo_variable])

print(solution['Ne21_16st_state'])

for pseudo_variable in solution:
    if '_16st' in pseudo_variable:
        print(pseudo_variable, solution[pseudo_variable])

【讨论】:

  • 这很接近,但最终我想在最后创建那些(空)字典(名为 Ne21_1st_stateNe21_2nd_state、...),以便我可以为它们附加一些值
  • 只需将 my_dic 替换为 empty_dic...
  • 我试过了,但它只是打印字典的名称(而不是创建它们)
  • 在“print(solution)”末尾添加这一行并运行它。你看到什么了? 1 个大字典,全是 30 个空字典,名称分别为 1st、2st 等。
  • True.. 但我想我可能不清楚我真正想在这里实现什么。基本上,我想要一个代码,它给我一个相当于输入Ne21_1st_state = {}Ne21_2nd_state = {}Ne21_3rd_state = {},......的代码,一直到我有多少状态,每个状态都创建一个空字典。
【解决方案3】:

我做到这一点的一种方法是使用列表理解。

key = list(
str(input(f"Please enter a Key for value {x + 1}: "))
if x == 0
else str(input(f"\nPlease enter a Key for value {x + 1}: "))
for x in range(3))

value = list(str(input(f"\nPlease enter a Bool for value {x + 1}: ")) 
for x in range(3))

BoolValues = dict(zip(key, value))

我首先创建一个键列表,然后是要存储在键中的值列表。然后我把它们一起压缩成字典。第一个列表中的条件语句只是为了更好的用户体验,如果它通过了第一个输入,则添加 \n。

实际上,现在我回顾这个问题,它可能与我的想法略有不同,您是否正在尝试为每个矩阵创建新字典?如果是这样的话,是不是和这个类似?:How do you create different variable names while in a loop?

【讨论】:

  • 是的。我想使用几行代码创建每个字典(Ne21_1st_stateNe21_2nd_stateNe21_3rd_state,...),而不必手动输入从1st 一直到30th 状态的每一个字典。
猜你喜欢
  • 2023-01-17
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 2021-07-25
  • 2019-03-29
  • 1970-01-01
  • 2017-09-16
  • 2022-01-13
相关资源
最近更新 更多