python如何仅使用选定的标签更新字典对象



如何更新dictionary对象以仅获取所选标记。例如,在下面我只想得到Id,和位置

InputString: 
{
1235 : {'Id':1, 'Product' : 'Prod1, 'Location' : 'NY'},
1236 : {'Id':2, 'Product' : 'Prod2, 'Location' : 'NJ'}
1237 : {'Id':3, 'Product' : 'Prod3, 'Location' : 'CT'}
}

结果

OutputString: 
{
1235 : {'Id':1, 'Location' : 'NY'},
1236 : {'Id':2, 'Location' : 'NJ'}
1237 : {'Id':3, 'Location' : 'CT'}
}

您可以使用这样的dict理解:

InputString= {1235 : {'Id':1, 'Product' : 'Prod1', 'Location' : 'NY'}, 1236 : {'Id':2, 'Product' : 'Prod2', 'Location' : 'NJ'}, 1237 : {'Id':3, 'Product' : 'Prod3', 'Location' : 'CT'}}
OutputString = {d: {k: v for k,v in InputString[d].items() if k in ['Id', 'Location']} for d in InputString}
print(OutputString)

输出:

{1235: {'Id': 1, 'Location': 'NY'}, 
1236: {'Id': 2, 'Location': 'NJ'}, 
1237: {'Id': 3, 'Location': 'CT'}}

你也可以列出你想保留的钥匙,并轻松更新以获得各种组合:

wanted = ['Id', 'Location']
InputString= {1235 : {'Id':1, 'Product' : 'Prod1', 'Location' : 'NY'}, 1236 : {'Id':2, 'Product' : 'Prod2', 'Location' : 'NJ'}, 1237 : {'Id':3, 'Product' : 'Prod3', 'Location' : 'CT'}}
OutputString = {d: {k: v for k,v in InputString[d].items() if k in wanted} for d in InputString}
print(OutputString)
执行此类操作的最佳方法是使用Pythonpandas模块中的pandas.DataFrame对象-请参阅https://pandas.pydata.org/

在这种情况下,这是不必要的,但它通常是一个很好的模块,可以用于这样的数据处理。请注意,必须安装它。

以下是如何使用它:

import pandas as pd
inp = pd.DataFrame({
1235: {"Id": 1, "Product": "Prod1", "Location": "NY"},
1236: {"Id": 2, "Product": "Prod2", "Location": "NJ"},
1237: {"Id": 3, "Product": "Prod3", "Location": "CT"}
}).T
out = inp[["Id", "Location"]]
print(out)

如果你想把out变成字典,你可以把最后一行替换为:

print(out.to_dict("index"))

相关内容

  • 没有找到相关文章