【发布时间】:2021-08-09 16:34:54
【问题描述】:
给出如下五个列表:
make = ['ford', 'fiat', 'nissan', 'suzuki', 'dacia']
model = ['x', 'y', 'z']
version = ['A', 'B', 'C']
type = ['sedan', 'coupe', 'van', 'kombi']
infos = ['steering wheel problems', 'gearbox problems', 'broken engine', 'throttle problems', None]
还有 JSON 对象:
data = [
{
'id': 1,
'make': 'ford',
'model': 'x',
'version': 'A',
'type': 'sedan',
'infos': [
{
"id": 999,
"name": 'steering wheel problems'
},
{
"id": 99,
"name": 'broken engine'
}
],
'owner':
{
"id": 999,
"name": 'alice'
},
"type":
{
"value": 987,
"id": 129,
"name": 'A',
"type": 'zaz'
}
},
...
]
我需要迭代并创建 JSON 对象,其中包含具有此类列表中所有可能的项目组合的字段以及它们在对象 data 中出现的次数,这意味着具有特定品牌、型号、版本、类型和特定信息的汽车(不仅一个信息项目,而且可以是多个甚至整个信息列表)是一定数量的 - 假设有 2 辆这样的汽车。我期待这样的事情:
total = [
{
'make': 'ford',
'model': 'x',
'version': 'A',
'type': 'sedan',
'infos': [
{
'inf': 'steering wheel problems'
}
],
'occurence': 0
},
...
{
{
'make': 'dacia',
'model': 'z',
'version': 'C',
'type': 'kombi',
'infos': [
{
'inf': 'steering wheel problems'
},
{
'inf': 'gearbox problems'
},
{
'inf': 'broken engine'
},
{
'inf': 'throttle problems'
}
],
'occurence': 1
}
]
我的尝试看起来像:
for i in infos:
for j in make:
for k in model:
for m in version:
for n in type:
s = sum([1 for p in data if (data['infos'] == i and data['make'] == j and data['model'] == k and data['version'] == m and data['type'] == n))
total.append({'infos': i, 'make': j, 'model': k, 'version': m, 'type': n, 'occurence': s})
return total
但我特别坚持迭代infos。在这样的问题中如何编写正确的代码?
【问题讨论】:
-
你坚持什么?你到底有什么问题?
-
“迭代信息”是什么意思?更重要的是,你到底坚持什么?运行代码时会发生什么?你想让它做什么呢?
-
这是一个常见错误。我建议您在谷歌上搜索确切的消息,看看其他人已经提出了哪些解决方案。
标签: python json loops for-loop