Перебирая список словаря в python - PullRequest
0 голосов
/ 08 ноября 2019

Данный список словаря в python

my_list=[{'id':0,'name':'cube0_cluster0','member_ids': [429, 432, 435]}, 
{'id': 1,'name': 'cube0_cluster1','member_ids': [0, 4, 5]}, 
{'id':0,'name':'cube1_cluster1','member_ids': [4, 706, 800]}]

Я хочу напечатать все member_ids для cube{ }_cluster1

Мой ожидаемый вывод - напечатать [0,4,5,706,800]

любая помощь будет высоко ценится

Я попробовал ее

for k in my_list: for j in range(len(my_list)): if k['name']=='cube{}_cluster1'.format(j): print(k['member_ids'])

Но я получаю два отдельных выхода как [0,4,5] и [4,706,800]

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Вы также можете использовать понимание списка.

my_list=[{'id':0,'name':'cube0_cluster0','member_ids': [429, 432, 435]}, 
{'id': 1,'name': 'cube0_cluster1','member_ids': [0, 4, 5]}, 
{'id':0,'name':'cube1_cluster1','member_ids': [4, 706, 800]}]


res = [j for i in my_list for j in i['member_ids'] if "cluster1" in i["name"]]

print (res) # return list
print (set(res)) # to return distinct data

# Result
# [0, 4, 5, 4, 706, 800]
# {0, 800, 706, 4, 5}

Надеюсь, это поможет и будет иметь значение!

1 голос
/ 11 ноября 2019

Попробуйте это.

import re    
member_ids = []
for di in my_list:
    if re.match('cube\d_cluster1', di['name']):
        member_ids += di['member_ids']
print(member_ids)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...