【发布时间】:2021-08-15 09:02:16
【问题描述】:
我有一个大的 JSON 对象。一部分是:
data = [
{
'make': 'dacia',
'model': 'x',
'version': 'A',
'typ': 'sedan',
'infos': [
{'id': 1, 'name': 'steering wheel problems'},
{'id': 32, 'name': 'ABS errors'}
]
},
{
'make': 'nissan',
'model': 'z',
'version': 'B',
'typ': 'coupe',
'infos': [
{'id': 3,'name': 'throttle problems'},
{'id': 56, 'name': 'broken handbreak'},
{'id': 11, ;'name': 'missing seatbelts'}
]
}
]
我创建了一个我感兴趣且可能出现在我的 JSON 中的信息列表:
make = ['ford', 'fiat', 'nissan', 'suzuki', 'dacia']
model = ['x', 'y', 'z']
version = ['A', 'B', 'C']
typ = ['sedan', 'coupe', 'van', 'kombi']
现在我需要遍历整个 JSON data 并计算某些信息组合出现的次数,所以我创建了一个代码:
tab = []
s = 0
for ma in make:
for mo in model:
for ve in version:
for ty in typ:
s = sum([1 for k in data if k['make] == ma and k['model] == mo and k['version'] == ve and k['typ'] == ty)
if s != 0:
total.append({'make': i, 'model': j, 'version': i, 'typ': j, 'sum': s})
我面临的问题是我知道这不是最佳方式。有什么方法可以加快和改进这段代码?
【问题讨论】:
-
这不是重复的吗 - stackoverflow.com/questions/68789951/…
-
您要忽略第二个代码块中未列出的品牌、型号等,还是我们可以假设
data中的所有条目都匹配?
标签: python json for-loop optimization