【问题标题】:How to make nested dictionary from multiple list如何从多个列表中制作嵌套字典
【发布时间】:2020-05-20 21:01:09
【问题描述】:

我确实尝试过,但它的说法对象不可迭代,任何人都可以修复它吗? 我实际上想将列表转换为嵌套字典,其中年份将是我的主键

a = ['1980', '1982', '1985', '1986'] 
b = ['Alex', 'Bob', 'John', 'David']
c = [9.99, 8.55, 7.66, 6.66],[5,7.5,8.5,9,5],[7.5,8.5,9,5],[7.5,8.5,9]

dic = dict(zip(*a,*b,*c))

下面我需要的输出。

{'1980':{'Alex':9.99,'Bob':8.5,'John':7.6,'David':6.66},'1982':{'Alex':5,'Bob':7.5,'John':8.5,'David':9} …….. So on for every year which is main key.
Thanks for the help

【问题讨论】:

  • 请确保您的输入和预期结果正确,以便我们更好地了解所需的行为
  • 在这种情况下,1985 年的结果应该是什么?输入中没有更多的值,它们都用完了 1980 年和 1982 年。
  • 实际上每个人的值在我的评估中超过 10 我只是在那里输入一些以了解如何进行嵌套...你可以在“c”列表中看到我拉长了一些输入数据
  • 我更新了数据集

标签: python python-3.x list dictionary nested


【解决方案1】:
final_dict = {}
year_num = 0
for year in a:
    final_dict[year] = {}
    person_num = 0
    for name in b:
        final_dict[year][name]=c[person_num+(4*year_num)]
        person_num+=1
    year_num+=1

应该可以的

【讨论】:

  • 为了让它工作,虽然它需要拥有每年的所有值,而不是这样。
  • 我用所有年份值更新了数据集,再次检查它
  • 我为 person 输入了错误的变量名,所以现在应该可以工作了。
  • 兄弟为什么你把 4*year_num 放在这里......我现在的代码有问题......实际上每年每个“名称”的值都会增加 +1 倍,所以它不是在迭代后为每个名称选择正确的值....不用担心第一次迭代,但第二次、第三次等没有选择正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2018-03-31
  • 2013-11-09
  • 2021-06-13
  • 2022-01-10
相关资源
最近更新 更多