簡體   English   中英

遍歷JSON文件python

[英]Loop through JSON file python

在JSON數據文件中,我想獲取對象列表中的第一個元素。 因此,在這種情況下,約翰,山姆和詹姆斯。

我可以在下面得到第一個這樣的元素,但是如何在列表中的第一個對象之間循環而不專門替換下面的值0,1,2?

data[0]["name"][0]
data[1]["name"][0]
data[2]["name"][0]
data[3]["name"][0]
...

with open('data.json') as f:
    data = json.load(f)
##prints list
print data[0]["name"]
##print first element in that list
print data[0]["name"][0]

json

[{
       "name":[ "John", "Sam", "Rick"]
   },
   {
       "name":[ "Sam", "Paul", "Like"]
   },
{
       "name":[ "James", "Saul", "Jack"]
   }
]
def get_first_name_from_each_dict(data_list):
    return [d['name'][0] for d in data]
print(get_first_name_from_each_dict([
    {
        "name": ["John", "Sam", "Rick"]
    },
    {
        "name": ["Sam", "Paul", "Like"]
    },
    {
        "name": ["James", "Saul", "Jack"]
    }
]))
['John', 'Sam', 'James']
names_res = map(lambda i: i['name'][0], data)

它輸出一個懶惰的“生成器”,這種“生成器”可以提高內存效率,比消耗所有數據要好得多

print(list(names_res))

>> ['John', 'Sam', 'James']

您應該研究Python中的循環類型,以充分了解這段代碼在做什么

您可以使用for循環遍歷data列表中的每個對象

names = []
for name_list in data:
    names.append(name_list["name"][0])

或者,您也可以通過列表理解功能完成所有操作

names = [name_list["name"][0] for name_list in data]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM