我有一个具有以下结构的JSON文件。
我想确定收费最低的频道并打印其详细信息(channel_id,node1,node2和总费用)
通道的总费用是两个节点的费用之和: total_fee =费用节点1 +费用节点2
{
"edges": [
{
"channel_id": "1",
"node1": "Alice",
"node2": "Bob",
"node1_policy": {
"fee": "1000"
},
"node2_policy": {
"fee": "1000"
}
},
{
"channel_id": "2",
"node1": "Caleb",
"node2": "Daniel",
"node1_policy": {
"fee": "500",
},
"node2_policy": {
"fee": "3000",
}
},
{
"channel_id": "3",
"node1": "Elen",
"node2": "Fatih",
"node1_policy": {
"fee": "2000"
},
"node2_policy": {
"fee": "5000"
}
}
}
完成此任务的最佳方法是什么?
答案 0 :(得分:0)
用几行代码即可做到这一点很简单。我应该指出,由于fee
键后的多余逗号,您的JSON文件格式无效。考虑删除它们以使其有效:
import json
with open('channels.json', 'r') as inFile:
jsonData = json.loads(inFile.read())
minimum = min([elem for elem in jsonData['edges']], key=lambda e: int(e['node1_policy']['fee']) + int(e['node2_policy']['fee']))
print(minimum)
输出:
{'channel_id': '1', 'node1': 'Alice', 'node2': 'Bob', 'node1_policy': {'fee': '1000'}, 'node2_policy': {'fee': '1000'}}