【问题标题】:Create a dictionary with dictionary values from others dictionnaries使用其他字典中的字典值创建字典
【发布时间】:2021-04-29 17:17:10
【问题描述】:

我有这些词典:

x={2020: 40, 2019: 37, 2015: 22, 2016: 9, 2017: 1}
y={2016: 0.0500, 2017: 0.0500, 2019: 0.0527, 2020: 0.0550, 2015: 0.0636}

我想得到这样的东西:

data={2016:{9,0.0500},2017:{9,0.0500},2019:{37,0.0527},2020:{40,0.0550},2015:{22,0.0636}}

我想在我的 dict 而不是 list 中包含 dict 值,因为我看到了一种方法来使用该类型的数据制作我想要的图表。

我现在在网上没有找到关于如何做的线索,如果你能帮助我一点,谢谢。

非常感谢!

【问题讨论】:

    标签: python-3.x dictionary


    【解决方案1】:

    假设xy 有相同的键,你可以这样做 -

    d = dict()
    for k,v in x.items():
        d[k] = {v, y[k]}
    
    print(d)
    

    虽然在这种情况下,d 的每个元素都是一个 set,因为字典总是有键值对。

    结果:

    {2020: {40, 0.055}, 2019: {0.0527, 37}, 2015: {0.0636, 22}, 2016: {0.05, 9}, 2017: {0.05, 1}}

    【讨论】:

    【解决方案2】:

    您想要的格式是不可能的。因为{} 表示字典,但你想要的不是字典。相反,您可以使用它

    from collections import defaultdict
    x = {2020: 40, 2019: 37, 2015: 22, 2016: 9, 2017: 1}
    y = {2016: 0.0500, 2017: 0.0500, 2019: 0.0527, 2020: 0.0550, 2015: 0.0636}
    dd = defaultdict(list)
    
    for d in (x, y):
        for key, value in d.items():
            dd[key].append(value)
    print(dd)
    

    【讨论】:

    【解决方案3】:
    x = {2020: 40, 2019: 37, 2015: 22, 2016: 9, 2017: 1}
    y = {2016: 0.0500, 2017: 0.0500, 2019: 0.0527, 2020: 0.0550, 2015: 0.0636}
    
    result = {}
    for k, v in x.items():
       for k1, v1 in y.items():
         if k == k1:
            result[k] = {v, v1}
    
    print(result)
    

    输出: {2020: {40, 0.055}, 2019: {0.0527, 37}, 2015: {0.0636, 22}, 2016: {0.05, 9}, 2017: {0.05, 1}}

    【讨论】:

      猜你喜欢
      • 2018-03-27
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 2018-04-07
      • 1970-01-01
      • 2020-09-09
      相关资源
      最近更新 更多