当前位置:  开发笔记 > 编程语言 > 正文

python 2.7:通过键的一部分从字典中删除键

如何解决《python2.7:通过键的一部分从字典中删除键》经验,为你挑选了2个好方法。

我有一个python字典,由tupples组成的字典键,

像这样 :

{
 (u'A_String_0', u'A_String_1', u'B_String_3', u'Remove_Me'): 300, 
 (u'A_String_0', u'B_String_4'): 301, 
 (u'A_String_0', u'A_String_1', u'B_String_3', u'Remove_Key'): 301,
}

当只有部分tupple出现在key中时,我想从字典中删除所有键:

例如 'Remove_'

在这种情况下,必须弹出两个键:一个包含u'Remove_Me',另一个包含u'Remove_Key'

最后字典将如下所示:

{
  (u'A_String_0', u'B_String_4'): 301
}

非常感谢 !



1> Iron Fist..:

单程:

    >>> d = {
     (u'A_String_0', u'A_String_1', u'B_String_3', u'Remove_Me'): 300, 
     (u'A_String_0', u'B_String_4'): 301, 
     (u'A_String_0', u'A_String_1', u'B_String_3', u'Remove_Key'): 301,
    }
    >>> 
    >>> 
    >>> d_out = {k:v for k,v in d.items() if not any(x.startswith('Remove_') for x in k)}
    >>> d_out
{(u'A_String_0', u'B_String_4'): 301}

编辑:如果你想检查是否Remove_是元组键的任何项目的一部分,那么你最好:

>>> d_out = {k:v for k,v in d.items() if not any('Remove_' in x for x in k)}



2> poke..:

由于键总是没有任何结构或模式的组合,因此您始终需要使用完整键才能访问字典中的元素.特别是这意味着您无法使用某个部分键找到元素.所以为了做到这一点,除了查看所有键之外别无他法:

>>> d = {
 (u'A_String_0', u'A_String_1', u'B_String_3', u'Remove_Me'): 300, 
 (u'A_String_0', u'B_String_4'): 301, 
 (u'A_String_0', u'A_String_1', u'B_String_3', u'Remove_Key'): 301}
>>> { k: v for k, v in d.items() if not any(x.startswith('Remove_') for x in k) }
{(u'A_String_0', u'B_String_4'): 301}

这将创建一个从源字典一个新的字典,采取一切关键k的这any(x.startswith('Remove_') for x in k)是不正确的.也就是说any(),如果有一个元素表达为真x,与开始'Remove_'.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有