提问人:shaik khadar 提问时间:2/6/2023 最后编辑:shaik khadar 更新时间:2/6/2023 访问量:118
如何在 Python 中从嵌套列表中获取特定值
How to get specific values from a nested list in Python
问:
你能帮我在下面的列表中获得我想要的特定值吗
list=[['Russia',[{'id': 250282,'d_id': 19553,'p_id': 1796,'value': 'silver'},
{'id': 250212,'d_id': 19553,'p_id': 1896,'value': 'gold'},
{'id': 250242,'d_id': 19553,'p_id': 1396,'value': 'iron'},
{'id': 250082,'d_id': 19553,'p_id': 1496,'value': 'cobalt'}]],
['China',[{'id': 210282,'d_id': 193,'p_id': 1196,'value': 'silver'},
{'id': 220212,'d_id': 193,'p_id': 1396,'value': 'iron'},
{'id': 240242,'d_id': 193,'p_id': 1586,'value': 'iron'},
{'id': 250082,'d_id': 193,'p_id': 1492,'value': 'gold'}]],
['Africa',[]],
['USA',[{'id': 200282,'d_id': 5531,'p_id': 1093,'value': 'iron'},
{'id': 253212,'d_id': 5531,'p_id': 1843,'value': 'gold'},
{'id': 255242,'d_id': 5531,'p_id': 1323,'value': 'iron'},
{'id': 257082,'d_id': 5531,'p_id': 1409,'value': 'cobalt'}]],
['UK',[]]]
output should be:
'Russia', 19553
'China', 193
'Africa', 0
'USA', 5531
'UK', 0
我正在尝试获取 d_id 的国家/地区和唯一值,因为它对于所有记录都是相同的,并将缺失值插补为 0
我尝试了循环和列表切片,但没有任何效果 如果你们中的任何人对此有解决方案,将不胜感激。
输出应为:
“俄罗斯”,19553
“中国”,193
'非洲', 0 '美国
', 5531
'英国', 0
在上面的输出中,非洲和英国d_id值补为 0
答:
0赞
John R
2/6/2023
#1
下次你应该在你的问题上包括你尝试过的代码。
{l[0]: set([_d['d_id'] for _d in l[1]]) if len(l[1]) > 0 else set([0]) for l in your_list}
0赞
tdelaney
2/6/2023
#2
内部列表有 2 个值 - 国家/地区名称和记录列表。您可以使用元组扩展来迭代列表以获取这两个值。如果记录列表不为空,请获取第一个值,否则使用零。
list=[['Russia',[{'id': 250282,'d_id': 19553,'p_id': 1796,'value': 'silver'},
{'id': 250212,'d_id': 19553,'p_id': 1896,'value': 'gold'},
{'id': 250242,'d_id': 19553,'p_id': 1396,'value': 'iron'},
{'id': 250082,'d_id': 19553,'p_id': 1496,'value': 'cobalt'}]],
['China',[{'id': 210282,'d_id': 193,'p_id': 1196,'value': 'silver'},
{'id': 220212,'d_id': 193,'p_id': 1396,'value': 'iron'},
{'id': 240242,'d_id': 193,'p_id': 1586,'value': 'iron'},
{'id': 250082,'d_id': 193,'p_id': 1492,'value': 'gold'}]],
['Africa',[]],
['USA',[{'id': 200282,'d_id': 5531,'p_id': 1093,'value': 'iron'},
{'id': 253212,'d_id': 5531,'p_id': 1843,'value': 'gold'},
{'id': 255242,'d_id': 5531,'p_id': 1323,'value': 'iron'},
{'id': 257082,'d_id': 5531,'p_id': 1409,'value': 'cobalt'}]],
['UK',[]]]
output = []
for name, records in list:
if records:
d_id = records[0]['d_id']
else:
d_id = 0
output.append((name, d_id))
for name, d_id in output:
print(f" '{name}': {d_id}")
0赞
aman
2/6/2023
#3
for item in list:
country = item[0]
metal = item[1]
d_id = []
for details in metal:
for ids in details:
if ids == 'd_id':
d_id.append(details[ids])
d_id = set(d_id)
if len(d_id):
print(f"{country},{d_id}")
else:
print(f"{country},0")
评论