【问题标题】:Creating a nested dictionary with a for loop in Python在 Python 中使用 for 循环创建嵌套字典
【发布时间】:2021-12-03 05:53:41
【问题描述】:

我试图在下面获得预期输出,它在下面创建名为John1, John2, John3 的子文件夹,然后将{0: 'John', 1: 'John', 2: 'John', 3: 'John'} 值添加到每个实质上创建嵌套字典的值。我怎样才能做到这一点并获得预期的输出?

dicts = {}
keys = range(4)
name_vals = ['John'+str(k+1) for k in range(3)]
values = ["Hi", "I", "am", "John"]
for k in name_vals:
    for i in keys:
        for x in values:
            dicts[k][i] = x

预期输出:

{John1: {0: 'John', 1: 'John', 2: 'John', 3: 'John'},
 John2: {0: 'John', 1: 'John', 2: 'John', 3: 'John'},
 John3: {0: 'John', 1: 'John', 2: 'John', 3: 'John'}}

【问题讨论】:

  • 所以你希望内部字典的所有值都是 John?
  • 您确定您的预期输出正确吗?你期待这个{0: 'Hi', 1: 'I', 2: 'am', 3: 'John'}吗?
  • 如果所有值都是John,那么values 列表的意义何在?

标签: python list dictionary for-loop append


【解决方案1】:

你可以试试这个

keys = range(4)
name_vals = ['John'+str(k+1) for k in range(3)]
values = ["Hi", "I", "am", "John"]
    
dicts = {}
for k in name_vals:
    subdict = {}
    for i in keys:
        subdict[i] = values[i]
    dicts[k] = subdict
            
dicts

输出

{'John1': {0: 'Hi', 1: 'I', 2: 'am', 3: 'John'},
 'John2': {0: 'Hi', 1: 'I', 2: 'am', 3: 'John'},
 'John3': {0: 'Hi', 1: 'I', 2: 'am', 3: 'John'}}

如果您希望所有值都为“john”,那么只需将values[i] 替换为values[3]

【讨论】:

    【解决方案2】:

    这就是列表理解的方式

    values = ["Hi", "I", "am", "John"]
    
    { f'Jhon{k+1}': {i: values[3] for i in range(len(values))} for k in range(3)}
    

    输出:

    {'Jhon1': {0: 'John', 1: 'John', 2: 'John', 3: 'John'},
     'Jhon2': {0: 'John', 1: 'John', 2: 'John', 3: 'John'},
     'Jhon3': {0: 'John', 1: 'John', 2: 'John', 3: 'John'}}
    

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2019-03-29
      • 2017-01-03
      • 2020-06-14
      • 2019-09-30
      • 2020-11-02
      • 2022-01-03
      • 2019-04-23
      • 1970-01-01
      相关资源
      最近更新 更多