我有这个json,我想只将follower_ids w.r.t project_id提取到列表中:
followers_ids_for_01 = [123,124,...]
followers_ids_for_02 = [125,126,...]
Json List:
{
"data": [{
"id": 01,
"followers": [{
"id": 123,
"name": "Shivkumar"
}, {
"id": 124,
"name": "Sneha"
},
{
.....
}],
}, {
"id": 02,
"followers": [{
"id": 125,
"name": "Teja"
}, {
"id": 126,
"name": "Harsha"
},
{
......
}],
}]
}
我尝试了什么:
data =json_list
projects = data['data']
followers_ids =[]
for project in projects:
for i in project['followers']:
followers_ids.append( i['id'])
print followers_ids
输出:
[123, 124, 125, 126]
有人可以为" followers_ids_for_{project_id}
"建议如何生成列表并在其中添加其各自的关注者ID?
修改/更新
我需要为空白列表生成命名变量
datalists = dict()
for project in projects:
datalists["followers_ids_for_{}".format(project['id'])] = []
print datalists
#{'followers_ids_for_1': [], 'followers_ids_for_2': []}
答案 0 :(得分:1)
您可以使用列表理解
[follower['id'] for project in projects for follower in project['followers']]
如果您只对特定项目ID感兴趣
[follower['id'] for project in projects for follower in project['followers'] if project['id] == 'some id']
答案 1 :(得分:1)
您可以使用nest dict comprehension 表达式来创建dict
对象:
>>> {val['id']: [item['id'] for item in val['followers']] for val in data['data']}
{1: [123, 124], 2: [125, 126]}
让我们说上面的dict存储在变量result
中。然后,您可以访问与每个所谓的项目ID 对应的dict中的元素:
>>> result[1] # For id '1'
[123, 124]
>>> result[2] # For id '2'
[125, 126]
PS:上述字典理解中的data
变量保存了JSON对象的值,即:
{
"data": [{
"id": 1,
"followers": [{
"id": 123,
"name": "Shivkumar"
}, {
"id": 124,
"name": "Sneha"
}],
}, {
"id": 2,
"followers": [{
"id": 125,
"name": "Teja"
}, {
"id": 126,
"name": "Harsha"
}]
}]
}
答案 2 :(得分:1)
您要做的第一件事是以您想要的格式构建字典:
In [514]: f = {'followers_ids_for_%s' %d['id'] : [x['id'] for x in d['followers']] for d in data['data'] }; f
Out[514]: {'followers_ids_for_01': [123, 124], 'followers_ids_for_02': [125, 126]}
我建议你在这里停止。但是,这是第二步, 高度不推荐的 步骤(来自您的hard requirement):更新globals()
。< / p>
In [516]: globals().update(f)
In [517]: followers_ids_for_01
Out[517]: [123, 124]
现在您可以将这些变量作为列表进行访问。再一次,这很糟糕,因为它会污染你的全局。