Tor*_*ren 3 python dictionary python-2.7
我有一个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,
}
Run Code Online (Sandbox Code Playgroud)
当只有部分tupple出现在key中时,我想从字典中删除所有键:
例如 'Remove_'
在这种情况下,必须弹出两个键:一个包含u'Remove_Me'
,另一个包含u'Remove_Key'
最后字典将如下所示:
{
(u'A_String_0', u'B_String_4'): 301
}
Run Code Online (Sandbox Code Playgroud)
非常感谢 !
单程:
>>> 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}
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想检查是否Remove_
是元组键的任何项目的一部分,那么你最好:
>>> d_out = {k:v for k,v in d.items() if not any('Remove_' in x for x in k)}
Run Code Online (Sandbox Code Playgroud)
由于键总是没有任何结构或模式的组合,因此您始终需要使用完整键才能访问字典中的元素.特别是这意味着您无法使用某个部分键找到元素.所以为了做到这一点,除了查看所有键之外别无他法:
>>> 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}
Run Code Online (Sandbox Code Playgroud)
这将创建一个从源字典一个新的字典,采取一切关键k
的这any(x.startswith('Remove_') for x in k)
是不正确的.也就是说any()
,如果有一个元素表达为真x
,与开始'Remove_'
.
归档时间: |
|
查看次数: |
200 次 |
最近记录: |