【问题标题】:how to merge three dictionaries and removing common key values and rearrange it in ascending order?如何合并三个字典并删除公共键值并按升序重新排列?
【发布时间】:2021-02-23 19:17:36
【问题描述】:
dict 1={99: [2.35, nan, 4.31], 200: [2.02, nan, nan],314: [1.94, nan, nan],749: [21.75, nan, nan],964: [25.73, nan, nan],1232: [64.42, nan, nan],1486: [95.46, nan, nan],1620: [120.96, nan, nan],1851: [60.19, nan, nan],1886: [57.64, nan, nan],2034: [34.32, nan, nan],2086: [35.16, nan, nan],2368: [25.17, nan, nan]}

dict2={101: [nan, 21.67, nan],287: [nan, 20.23, nan],738: [nan, 77.4, nan],897: [nan, 86.6, nan],1235: [nan, 138.77, nan],1490: [nan, 187.46, nan],1668: [nan, 216.83, nan],1894: [nan, 130.03, nan],2345: [nan, 75.26, 15.9]}

dict3= {99: [2.35, nan, 4.31],205: [nan, nan, 4.08],308: [nan, nan, 3.32],448: [nan, nan, 5.79],570: [nan, nan, 7.04],748: [nan, nan, 10.85],994: [nan, nan, 19.56],1237: [nan, nan, 33.89],1415: [nan, nan, 35.21],1618: [nan, nan, 41.38],1676: [nan, nan, 40.11],1899: [nan, nan, 25.51],1986: [nan, nan, 21.45],2039: [nan, nan, 22.56],2337: [nan, nan, 16.71],2345: [nan, 75.26, 15.9]}

【问题讨论】:

  • 你应该展示你的代码。你试过什么?

标签: python pandas numpy dataframe machine-learning


【解决方案1】:

如果您使用相对较小的 dict,这是一个直截了当的解决方案:

import numpy as np
from numpy import nan
# here i replicate your data
dict1={99: [2.35, nan, 4.31], 200: [2.02, nan, nan],314: [1.94, nan, nan],749: [21.75, nan, nan],964: [25.73, nan, nan],1232: [64.42, nan, nan],1486: [95.46, nan, nan],1620: [120.96, nan, nan],1851: [60.19, nan, nan],1886: [57.64, nan, nan],2034: [34.32, nan, nan],2086: [35.16, nan, nan],2368: [25.17, nan, nan]}
dict2={101: [nan, 21.67, nan],287: [nan, 20.23, nan],738: [nan, 77.4, nan],897: [nan, 86.6, nan],1235: [nan, 138.77, nan],1490: [nan, 187.46, nan],1668: [nan, 216.83, nan],1894: [nan, 130.03, nan],2345: [nan, 75.26, 15.9]}
dict3= {99: [2.35, nan, 4.31],205: [nan, nan, 4.08],308: [nan, nan, 3.32],448: [nan, nan, 5.79],570: [nan, nan, 7.04],748: [nan, nan, 10.85],994: [nan, nan, 19.56],1237: [nan, nan, 33.89],1415: [nan, nan, 35.21],1618: [nan, nan, 41.38],1676: [nan, nan, 40.11],1899: [nan, nan, 25.51],1986: [nan, nan, 21.45],2039: [nan, nan, 22.56],2337: [nan, nan, 16.71],2345: [nan, 75.26, 15.9]}

# merge the dict's
dict_unsorted = {**dict1, **dict2, **dict3}

# put the keys in a list and sort them
keys = list(dict_unsorted.keys())
keys.sort()

# make a sorted list
dict_sorted = {}
for key in keys:
    dict_sorted[key] = dict_unsorted[key]

【讨论】:

    【解决方案2】:

    我认为这个问题需要澄清一下——如果发生键冲突并且值不同,你会怎么做?您很可能需要一个值列表。

    有了这个假设,您可以创建一个新的字典并使用以下逻辑循环遍历您的数据字典:

    1. 如果键不存在,插入键并附加值。
    2. 如果键存在,循环遍历值列表并检查当前值是否在列表中。
      1. 如果当前值存在,则继续。
      2. 如果当前值不存在,则将该值附加到列表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-11
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 2020-08-05
      相关资源
      最近更新 更多