【问题标题】:How to create a nested dictionary which having same key values its childrens如何创建具有相同键值的嵌套字典
【发布时间】:2020-11-17 15:55:51
【问题描述】:

我正在尝试创建一个如下所示的字典

Output
{
'user1':{
'user':'amal_jose',
'mark':100,
'subject':English
},
'user2':{
'user':'denil_jose',
'mark':100,
'subject':English
},
'user3':{
'user':'james_jose',
'mark':100,
'subject':English
},
'user4':{
'user':'hendry_jose',
'mark':100,
'subject':English
},
'user5':{
'user':'denil_jose',
'mark':100,
'subject':English
}

从这个输入

Users_Inputs= 
{
'amal_jose':(100,'English'),
'denil_jose':(100,'English'),
'james_jose':(100,'English'),
'hendry_jose':(100,'English'),
'ladest_jose':(100,'English')
}

我尝试了以下代码,但没有成功,它只打印最后一个值

            for name,subject_Details in Users_Inputs.items():
                for details in subject_Details:
                    data['SchoolID']=5
                    data['name']=name
                    data['mark']=details[0]
                    data['subject']=details[1]
             print(data)      



我想知道如何以这种嵌套字典的方式得到结果

【问题讨论】:

    标签: python-3.x dictionary multidimensional-array


    【解决方案1】:

    您已经接近正确的解决方案了。

    它只打印最后一个值,因为datafor 循环之外

    假设datadict,您可以使用:

    for index,name,subject_Details in enumerate(Users_Inputs.items()):
                    data["user"+index] = dict()
                    for details in subject_Details:
                        data["user"+index]['SchoolID']=5
                        data["user"+index]['name']=name
                        data["user"+index]['mark']=details[0]
                        data["user"+index]['subject']=details[1]
                 print(data)      
    

    这将创建一个包含所有用户的data 变量

    【讨论】:

      【解决方案2】:

      这与您的代码非常接近,我只是做了一些小调整。

      Users_Inputs= {
      'amal_jose':(100,'English'),
      'denil_jose':(100,'English'),
      'james_jose':(100,'English'),
      'hendry_jose':(100,'English'),
      'ladest_jose':(100,'English')
      }
      i=1
      ans = {}
      for k,v in Users_Inputs.items():
          dic = {}
          dic['user'] = k
          dic['mark'] = v[0]
          dic['subject'] = v[1]
          ans['user'+str(i)] = dic
          i+=1
      ans    
      

      输出:

      {'user1': {'user': 'amal_jose', 'mark': 100, 'subject': 'English'},
       'user2': {'user': 'denil_jose', 'mark': 100, 'subject': 'English'},
       'user3': {'user': 'james_jose', 'mark': 100, 'subject': 'English'},
       'user4': {'user': 'hendry_jose', 'mark': 100, 'subject': 'English'},
       'user5': {'user': 'ladest_jose', 'mark': 100, 'subject': 'English'}}
      

      【讨论】:

      • 收到此错误not enough values to unpack (expected 3, got 2)
      • 执行相同操作时出现上述错误
      • 它适用于我在代码中提到的输入。您的输入是什么,哪一行引发了错误?
      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2021-12-04
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 2020-12-16
      相关资源
      最近更新 更多