如何从字典中删除长度小于7个字母的值?

时间:2018-05-18 00:58:45

标签: python-3.x

我已经被困在这段小代码上了很长一段时间,并且想知道是否有人可以帮助解决我的问题或告诉我如何编码它。我想要的输出是手机:['motorolla','oneplus'] 我基本上试图输出超过7个字母的电话名称,提前谢谢

def main():

    my_dict = {'phones': ['galaxy', 'oneplus', 'google', 'apple', 'motorolla']}
    items_list = list(my_dict.items())
    for key, value in items_list:
         if len(value) < 7:
            del my_dict[value]
    return my_dict


def print_dict_in_key_order(a_dict):
    all_keys = list(a_dict.keys())
    all_keys.sort()
    for key in all_keys:
        print(key, ":", a_dict[key])

main()

2 个答案:

答案 0 :(得分:1)

def main():

my_dict = {'phones': ['galaxy', 'oneplus', 'google', 'apple', 'motorolla']}
#items_list = list(my_dict.items())
for key in my_dict:
     new_list=[]
     for value in my_dict[key]:
         if len(value)>=7:
             new_list.append(value)
     my_dict[key]=new_list
     print('{}:'.format(key),new_list)
print(my_dict)

return my_dict

main()的

main()

我认为这对您来说更容易理解。

答案 1 :(得分:0)

一种方法是使用字典理解来重建字典,例如:

def main():
    my_dict = {'phones': ['galaxy', 'oneplus', 'google', 'apple', 'motorolla']}
    return {k: sorted(v for v in vs if len(v) >= 7) for k, vs in my_dict.items()}

In []:
main()

Out[]:
{'phones': ['motorolla', 'oneplus']}

如果您只是想要手机,那么您可以用以下内容替换理解:

    return sorted(v for vs in my_dict.values() for v in vs if len(v) >= 7)