Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将许多具有共享键的字典(在JSON中)连接到一个大字典中_Python_Json_Dictionary - Fatal编程技术网

Python:将许多具有共享键的字典(在JSON中)连接到一个大字典中

Python:将许多具有共享键的字典(在JSON中)连接到一个大字典中,python,json,dictionary,Python,Json,Dictionary,我正在运行许多模拟,每个模拟都将一个数据字典附加到一个基本JSON文件中,例如: {"Hnet": 0.047545953331778974,"Kabs": 0.4834911581175083, "t": 0.05} {"Hnet": 0.8080405956760083, "Kabs": 0.187428764511818, "t": 0.15} ... 最后,我想使用共享键将所有这些单独的字典连接到一个只有这些共享键的字典中,这样我就可以转换成数据帧并查看合并的数据。我该怎么做呢 根据我

我正在运行许多模拟,每个模拟都将一个数据字典附加到一个基本JSON文件中,例如:

{"Hnet": 0.047545953331778974,"Kabs": 0.4834911581175083, "t": 0.05}
{"Hnet": 0.8080405956760083, "Kabs": 0.187428764511818, "t": 0.15}
...

最后,我想使用共享键将所有这些单独的字典连接到一个只有这些共享键的字典中,这样我就可以转换成数据帧并查看合并的数据。我该怎么做呢

根据我的理解,您希望使用python基于键合并值。正确的方法是将这些值放在列表中,这样以后就更容易将它们用作数据帧

>>> with open('sample.json') as f:
...      data = json.loads(f.read())
... 
>>> data
[{'Hnet': 0.047545953331778974, 'Kabs': 0.4834911581175083, 't': 0.05}, {'Hnet': 0.8080405956760083, 'Kabs': 0.187428764511818, 't': 0.15}]
>>> 
>>> from collections import defaultdict
>>> final_data = defaultdict(list)
>>> for row in data:
...     for k, v in row.items():
...         final_data[k].append(v)
... 
>>> final_data
defaultdict(<class 'list'>, {'Hnet': [0.047545953331778974, 0.8080405956760083], 'Kabs': [0.4834911581175083, 0.187428764511818], 't': [0.05, 0.15]})
>>> 
以open('sample.json')作为f: ... data=json.load(f.read()) ... >>>资料 [{'Hnet':0.047545953331778974,'Kabs':0.4834911581175083,'t':0.05},{'Hnet':0.8080405956760083,'Kabs':0.187428764511818,'t':0.15}] >>> >>>从集合导入defaultdict >>>最终数据=defaultdict(列表) >>>对于数据中的行: ... 对于行中的k,v.items(): ... 最终数据[k]。追加(v) ... >>>最终数据 defaultdict(,{'Hnet':[0.047545953331778974,0.8080405956760083],'Kabs':[0.483491158175083,0.187428764511818],'t':[0.05,0.15]) >>>
将字典放入列表中,然后将列表转换为数据帧

import pandas as pd

list_of_dicts =[{"Hnet": 0.047545953331778974,"Kabs": 0.4834911581175083, "t": 0.05},
                {"Hnet": 0.8080405956760083, "Kabs": 0.187428764511818, "t": 0.15},
                {"Hnet": 0.2983472834234521, "Kabs": 0.234872398473289, "t": 0.10},
                {"Hnet": 0.012937281973213913, "Kabs": 0.384849210587031, "t": 0.05}]

df = pd.DataFrame(list_of_dicts)

print(df)
您的输出将是:

       Hnet      Kabs     t
0  0.047546  0.483491  0.05
1  0.808041  0.187429  0.15
2  0.298347  0.234872  0.10
3  0.012937  0.384849  0.05

这与熊猫有什么关系?你能证明自己在解决这个问题上做了什么努力吗?到目前为止你做了哪些尝试?请尽可能遵循指导原则。目标不明确。我正在努力理解代码。
defaultdict(list)
在这里做什么?@ap21
defaultdict
充当不存在键的默认输入值。这意味着,如果您试图访问字典中不存在的密钥,它将查找默认值。在本例中,将返回空的
列表