比较并返回字典字符串值?

2024-09-27 21:26:50 发布

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

尝试创建一个函数,从字典中返回值列表。如果每周给植物浇水,它会被添加到列表中,然后分类返回。但是,我的代码会迭代“weekly”的每个字母,而不是整个字符串,我不知道如何访问字典项的频率。如有任何解释,将不胜感激。你知道吗

def weekly(plants_d):
    d = []
    for plant in plants_d:
        for plan in plants_d[plant]:
            if plan == "weekly":
                d.append[plan]
                    return sort(d)
weekly({'fern':'weekly', 'shamrock':'weekly', 'carnation':'weekly'})
# Should return like this: ['carnation','fern','shamrock'] 

Tags: 函数in列表forreturn字典植物plant
3条回答

修改之前的答案,以便仅使用带“weekly”的值:

>>> my_dict = {'fern':'weekly', 'shamrock':'weekly', 'carnation':'weekly', 'daffodil': 'monthly'}
>>> sorted(k for k, v in my_dict.items() if v == 'weekly')
['carnation', 'fern', 'shamrock']

实现这一点的简化方法是使用dict.keys(),它返回dict中所有键的列表。为了对列表进行排序,可以使用^{}作为:

>>> my_dict = {'fern':'weekly', 'shamrock':'weekly', 'carnation':'weekly'}
>>> sorted(my_dict.keys())
['carnation', 'fern', 'shamrock']

编辑:如果有些计划是月度计划,则首先使用filterdict comprehension过滤月度计划。你的代码应该是这样的:

>>> my_dict = {'fern':'weekly', 'shamrock':'weekly', 'carnation':'weekly', 
               'something': 'monthly'}
# using filter() as @brianpck has already mentioned 'dict comprehension' approach
# It is better to use brian's approach
>>> filtered_dict = dict(filter(lambda x: x[1] == 'weekly', my_dict.items())) 
>>> sorted(filtered_dict.keys())
['carnation', 'fern', 'shamrock']

这条线:

for plan in plants_d[plant]:

这是错误的。因为plants_d[plant]是一个类似于"weekly"的字符串,所以

for plan in "weekly":

它将遍历字符串中的字母。当你做if plan == "weekly":时,它永远不会匹配,因为plan只是一个像"w"一样的字母。你知道吗

您可以简单地使用:

if plants_d[plan] == "weekly":

或者可以将第一个循环更改为:

for plan_name, plan_frequency in plants_d.items():
    if plan_frequency == "weekly":
        d.append[plan_name]

Iterating over dictionaries using 'for' loops

相关问题 更多 >

    热门问题