gpt4 book ai didi

Python - 将所有 'available' 元素保存在 Json 中,并在所有搜索完成后打印它?

转载 作者:行者123 更新时间:2023-12-01 01:47:42 26 4
gpt4 key购买 nike

所以我一直在研究 json,并基本上用它来提高知识。

我想做的是将所有可用的数字等保存在列表或您可能想到的任何内容中。

Json:

{
"threads": [
{
"seoTitle": "trucks",
"other_crap": "it's a fox!"
},
{
"seoTitle": "rockets",
"other_crap": "i'm rocket man"
},
{
"seoTitle": "helicopter",
"other_crap": "for 007",
"skus": [
{
"Number": "7",
"available": true
},
{
"Number": "7.5",
"available": true
},
{
"Number": "8",
"available": false
},
{
"Number": "8.5",
"available": true
},
{
"Number": "9",
"available": true
},
{
"Number": "9.5",
"available": false
},
{
"Number": "10",
"available": true
},
{
"Number": "10.5",
"available": false
},
{
"Number": "11",
"available": true
},
{
"Number": "11.5",
"available": false
},
{
"Number": "12",
"available": true
},
{
"Number": "12.5",
"available": false
},
{
"Number": "13",
"available": true
}
],
"restricted": false,
"subtitle": "Stackoverflow"
}
]
}

正如您从 Json 文件中看到的那样,有 skus ,下面有不同的 Number 和可用的,我想要做的是打印所有 NUMBERS strong> 基于 IF 它可用,意思是如果它可用,则将其打印出来或将其保存到列表中,然后在搜索完所有内容后将其打印出来,如果 可用,然后跳到下一个。 - 这就是我的目标 - 问题是我不知道我应该通过 json 文件做什么,我怎样才能让它知道要根据可用的内容保存到列表中em>?

1) 您的预期输出是什么,

我期望的输出可能如下所示:

helicopter
for 007
7
7.5
8.5
9
10
11
12
13

2) 到目前为止您已尝试过的操作,

现在我只打印了 seoTitle 和 other_crap

print(threads['seoTitle'])
print(threads['other_crap'])

3) 为什么你所尝试的方法不起作用

我试图做一个 for 循环,但我完全失败了

for element in threads['skus']:
if element not 'available'

基本上失败了:/

我正在使用的代码:

old_list = []

while True:
try:
resp = requests.get(url)
new_list = resp.json()['threads']

for item in new_list:
if item['seoTitle']not in old_list:
try:


print(item['seoTitle'])
print(item['other_crap'])


itemskus = item.get('skus', {})
if itemskus:
for element in item['skus']:
print(element)
else:
print('Item skus could not be found')


old_list.append(['seoTitle'])



except Exception as e:
print(e)
print("ERROR")
time.sleep(5)
continue


else:
randomtime = random.randint(4, 60)
time.sleep(randomtime)


except Exception as e:
continue

现在这是我的输出:

helicopter
for 007
{"Number": "7", "available": true }
{"Number": "7.5", "available": true }
{"Number": "8", "available": false }
{"Number": "8.5","available": true }
{"Number": "9", "available": true}
{"Number": "9.5", "available": false}
{"Number": "10", "available": true}
{"Number": "10.5", "available": false }
{"Number": "11", "available": true}
{"Number": "11.5","available": false }
{"Number": "12","available": true }
{"Number": "12.5", "available": false}
{"Number": "13", "available": true }

最佳答案

首先,您需要将 json 导入到 python dict 中。假设您的文件名为 my_sample.json 那么您就这样做

import json
with open('my_sample.json') as f:
sample = json.load(f)

现在,sample 是一个包含 json 数据的字典。您想要访问线程列表中第三个线程的 sku(前提是该线程可用)。您可以通过创建以下列表来实现此目的

available_skus = [float(d['Number']) for d in sample['threads'][2]['skus'] if d['available']]

然后打印你需要的内容

print(sample['threads'][2]['seoTitle'])
for el in available_skus:
print(el)

输出

helicopter
7
7.5
8.5
9
10
11
12
13

编辑

如果您不确定 skus 信息始终位于第三个线程,您可以用以下内容替换 available_skus

available_skus = [d['Number'] for thread in sample['threads'] if 'skus' in thread.keys() for d in thread['skus'] if d['available']] 

关于Python - 将所有 'available' 元素保存在 Json 中,并在所有搜索完成后打印它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51078276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com