【问题标题】:create new dictionary with existing dictionary使用现有字典创建新字典
【发布时间】:2019-08-23 11:00:51
【问题描述】:

我有一本字典:

a={'name':'jhonson','profession':'doctor','location':'new york'}

现在,我只想创建一个新字典,键为'doc_*counter'。比如:

new_dict={'doc_1':{'name':'jhonson'},'doc_2':{'profession':'doctor'},'doc_3':{'location':'new york'}}

我做了什么:

count=0
new_dict={}
for k,v in a.items():
    count+=1
    new_dict['doc'+str(count)][k]=v

【问题讨论】:

    标签: python arrays python-3.x dictionary


    【解决方案1】:

    你可以使用 enumerate():

    Python 枚举()

    enumerate() 方法将计数器添加到可迭代对象并返回它(枚举对象)。

    a={'name':'jhonson','profession':'doctor','location':'new york'}
    
    new_dict = {}
    for idx, key in enumerate(a.keys()):
        new_dict['doc_' + str(idx)] = {key: a[key]}
    
    print (new_dict)
    

    输出:

    {'doc_0': {'name': 'jhonson'}, 'doc_1': {'profession': 'doctor'}, 'doc_2': {'location': 'new york'}}
    

    或者只使用列表推导:

    a={'name':'jhonson','profession':'doctor','location':'new york'}
    
    new_dict = {'doc_' + str(idx): {key: a[key]} for (idx, key) in enumerate(a.keys())}
    print (new_dict)
    

    输出:

    {'doc_0': {'name': 'jhonson'}, 'doc_1': {'profession': 'doctor'}, 'doc_2': {'location': 'new york'}}
    

    【讨论】:

      【解决方案2】:

      并添加到前面给出的答案。如果在枚举中使用a.items()。可以解压字典中的键值对。

      a={'name':'jhonson','profession':'doctor','location':'new york'}
      
      new_dict = {}
      for idx, (key, value) in enumerate(a.items()): 
        new_dict['doc' + str(idx)] = {key: value}
      
      print(new_dict)
      

      这消除了对键值的额外查找:{key: a[key]}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-17
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        • 2021-10-25
        • 2021-01-15
        • 2018-06-21
        • 1970-01-01
        相关资源
        最近更新 更多