遍历JSON文件python

时间:2019-04-01 17:39:18

标签: 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"]
   }
]

3 个答案:

答案 0 :(得分:3)

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']

答案 1 :(得分:1)

names_res = map(lambda i: i['name'][0], data)

它输出的是一个惰性的“生成器”,它可以提高内存效率,比消耗所有数据要好得多

print(list(names_res))

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

答案 2 :(得分:1)

您应该研究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]