首页 > 解决方案 > 如何合并三个字典并删除公共键值并按升序重新排列?

问题描述

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]}

标签: pythonpandasnumpydataframemachine-learning

解决方案


如果您使用相对较小的 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]

推荐阅读