Я бы хотел от этого уйти:

my_dict = {'key1': ['cat', 'dog'], 'key2': ['horse']}

К этому:

my_tuple = [('key1', 'cat'), ('key1', 'dog'), ('key2', 'horse')]

Это возможно?

0
William 4 Фев 2022 в 13:52

2 ответа

Лучший ответ

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

[(key, value) for key, lst in my_dict.items() for value in lst]

Выход:

[('key1', 'cat'), ('key1', 'dog'), ('key2', 'horse')]
3
mozway 4 Фев 2022 в 13:56
Это означает, что у вас есть некоторые значения, которые не являются списками, что не соответствует вашему вопросу. Пожалуйста обновите ;)
 – 
mozway
4 Фев 2022 в 15:21

Вы можете использовать следующие итерации для достижения результата:

my_dict = {'key1': ['cat', 'dog'], 'key2': ['horse']}
my_tuple = []
for val in my_dict:
    for key in my_dict[val]:
        tup = (val, key)
        my_tuple.append(tup)
print(my_tuple)

Вы получите следующий вывод:

[('key1', 'cat'), ('key1', 'dog'), ('key2', 'horse')]
0
hardik singh 4 Фев 2022 в 14:04