如何在字典上使用list extend()和map函数

2024-09-25 08:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,试图理解map函数是如何工作的

我有一个输入字典,键是字符串,值是字符串列表

input_dict = {'Mobile': ['Redmi', 'Samsung', 'Realme'], 
'Laptop': ['Dell', 'HP'],
'TV': ['Videocon', 'Sony'] }

我想把它转换成下面这样的列表

['Mobile_Redmi', 'Mobile_Samsung', 'Mobile_Realme', 'Laptop_Dell', 'Laptop_HP', 'TV_Videocon', 'TV_Sony']

所以我试着用下面的列表扩展方法使用map函数

def mapStrings(item):
    key, value_list = item[0], item[1]  
    result = []
    for val in value_list:
        result.append(key+"_"+val)
    return result

result_list = []
result_list.extend(map(mapStrings, input_dict.items()))
print(result_list)

上面的代码给了我

[['Mobile_Redmi', 'Mobile_Samsung', 'Mobile_Realme'], ['Laptop_Dell', 'Laptop_HP'], ['TV_Videocon', 'TV_Sony']]

我试图理解为什么result_list.extend()没有生成所需的输出


Tags: map列表resulttvmobileitemlistdell
1条回答
网友
1楼 · 发布于 2024-09-25 08:27:11

^{}将iterable的所有元素添加到列表中。在本例中,元素本身就是列表,因此可以得到嵌套列表。您需要使用dict中的每个列表扩展列表,例如:

result_list = []
for item in input_dict.items():
    result_list.extend(mapStrings(item))

如果确实要使用map,可以使用:

result_list = [item for items in map(mapStrings, input_dict.items()) for item in items]

有关更多方法,请查看How to make a flat list out of list of lists?,请注意,您实际上不是在处理列表列表,而是处理map对象,因此请注意细微的差异

相关问题 更多 >