Я хочу объединить свой список идентификаторов со своим списком статусов, и для этого я использовал понимание списка:
# id
id_list = [
1, # UAE1S
2, # UAE2S
3, # UAE3S
]
# status
status_list = [
'okay',
'not okay',
'unknown',
]
result = [
{
'id':id,
'status':status,
}
for id in id_list
for status in status_list
]
print(result)
[{'id': 1, 'status': 'okay'}, {'id': 1, 'status': 'not okay'}, {'id': 1, 'status': 'unknown'}, {'id': 2, 'status': 'okay'}, {'id': 2, 'status': 'not okay'}, {'id': 2, 'status': 'unknown'}, {'id': 3, 'status': 'okay'}, {'id': 3, 'status': 'not okay'}, {'id': 3, 'status': 'unknown'}]
Он выводит правильный список, но есть ли способ удалить вложенный цикл for?
@MisterMiyagi да
itertools.product дает декартово произведение,
import itertools
id_list = [1, 2, 3]
status_list = ['okay','not okay','unknown',]
[{'id': item[0], 'status': item[1]} for item in itertools.product(id_list, status_list)]
[{'статус': 'в порядке', 'id': 1}, {'статус': 'не в порядке', 'id': 1}, {'статус': 'неизвестно', 'id': 1}, {'статус': 'в порядке', 'id': 2}, {'статус': 'не в порядке', 'id': 2}, {'статус': 'неизвестно', 'id': 2}, { 'статус': 'хорошо', 'id': 3}, {'статус': 'не в порядке', 'id': 3}, {'статус': 'неизвестно', 'id': 3}]
Вы действительно намеревались использовать любую комбинацию? Похоже, что может потребоваться попарная комбинация.