代码之家  ›  专栏  ›  技术社区  ›  gwydion93

使用多个列表创建一个复杂的字典

  •  0
  • gwydion93  · 技术社区  · 7 年前

    假设我有三个列表,并希望使用列表中的项作为键和值来创建字典。我希望它看起来像这样:

    main_dic = {'FL-01':{'existing': 22, 'proposed': 47}, 'FL-01P': {'existing': 5, 'proposed': 8}, 'P04A': {'existing': 14, 'proposed': 38}, 'P05': {'existing': 7, 'proposed': 95}}
    

    units = ['FL-01','FL-01P','P04A','P05']
    existing = [22,5,14,7]
    proposed = [47, 8, 38, 95]
    

    我从设置和清空字典开始

     main_dic = dict()
    

    future = [4, 7, 91, 26] 那就不行了。我想先迭代单元列表,因为它们将是主字典的键并使用 setdefault(k, v) 不知怎的,但我不知道如何正确地应用这一点。有什么建议吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   DeepSpace    7 年前

    你使用的是正确的 zip :

    units = ['FL-01','FL-01P','P04A','P05']
    existing = [22,5,14,7]
    proposed = [47, 8, 38, 95]
    
    d = {u: {'existing': e, 'proposed': p} for u, e, p in zip(units, existing, proposed)}
    
    print(d)
    # {'FL-01': {'existing': 22, 'proposed': 47},
    #  'FL-01P': {'existing': 5, 'proposed': 8},
    #  'P04A': {'existing': 14, 'proposed': 38},
    #  'P05': {'existing': 7, 'proposed': 95}}
    
    推荐文章