У меня есть следующий словарь:
myDict = dict({'red': [1, 2],
'blue': [3, 4]})
И я хотел бы объединить пары ключ и значение в один список:
['red_1', 'red_2', 'blue_3', 'blue_4']
Каков наиболее эффективный способ добиться этого?
[key + '_' + str(value) for key, values in myDict.items() for value in values]





Вам просто нужно создать новый список, используя list comprehension вот так.
result = [f'{key}_{val}' for key, values in myDict.items() for val in values]
есть много других способов сделать это
Я намеренно избегал однострочников, поскольку вы, похоже, новичок в Python.
# Method 1 : As you know the length each list(values)
# as you have used curly braces, you dont need to use dict
myDict = {'red': [1, 2],
'blue': [3, 4]}
lst = []
for k, v in myDict.items():
#concatenate key, underscore and value of respective index and append. as value is integer convert to string
ele_1 = f'{k}_{str(v[0])}'
ele_2 = f'{k}_{str(v[1])}'
lst.append(ele_1)
lst.append(ele_2)
print(lst) #Output : ['red_1', 'red_2', 'blue_3', 'blue_4']
# Method 2: If you dont know the length of the values
lst = []
for k, v in myDict.items():
#iterate thru each value
for x in v:
ele = f'{k}_{str(x)}'
lst.append(ele)
print(lst) #Output : ['red_1', 'red_2', 'blue_3', 'blue_4']
Даже не попытка? Вы пробовали профилировать что-нибудь, чтобы посмотреть, что быстрее?