将map()函数(从Pool类)返回的列表转换为Python中的字典

2024-10-06 06:59:10 发布

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

我在Python中有一个函数,它由map()函数调用,该函数遍历作为参数发送的列表的所有元素。这个函数返回一个字典,map函数被分配给一个字典,但是Python解释器将它转换成一个列表。在

hotels_with_low_wifi_quality = pool.map(get_accomodation_wifi_rating, hotels_url_list)

所以在上面的句子中,hotels_with_low_wifi_quality是一个字典,get_conomodation_wifi_rating是一个返回字典的函数。在

但是,如果我打印的hotels_具有低_wifi_质量,则会输出以下内容:

[无,无,无,无,无,无,无,无,{u'\nPins Platja\n':u'4,3'},无,无,无,无] 没有

这显然是一份清单。如何将它转换成一个字典,其中None值被忽略,唯一的元素是[“Pins Platja”]=4.3

以下是get_-accomodation_-wifi_等级

^{pr2}$

Tags: 函数元素map列表get字典withwifi
2条回答

看起来你想同时获得所有的低wifi分数。每个人都是正确的,使用全球词典是一个非常糟糕的主意。有一种不那么冗长的方法来完成您想要的:

  1. 在您的 获取住宿/wifi评级功能:

    return (hotel_name, wifi_score)

  2. 使用python的内置filter过滤出非类型:

    hotels_with_low_wifi_quality = dict(filter(None, returned_list))

上面的Filter没有提供函数,根据python对该项的真实性的评估来评估列表中的每个项;只需要记住一些事情。在

Python有一种更好的语法,叫做list comprehension,用于映射和过滤。你可以实现你想要的

# We first map to get ratings
ratings = [get_accomodation_wifi_rating(name) for name in pool]

# We then filter the None out
ratings = [x for x in ratings if x is not None]

# We now have a list of `dict` which we want to merge
hotels_with_low_wifi_quality = {
    name: rating
        for d in ratings
        for name, rating in d.items()
}

{aki>你想要做的是什么样的函数。在

首先,它似乎在填充一个全局dict并返回它,这是一个really bad idea。在

第二,为了使用它,我只需返回一个name, rating元组来执行以下操作。在

^{pr2}$

相关问题 更多 >