搜索Python字典

2024-10-03 21:23:59 发布

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

我需要从Python中的列表中删除一个条目。内容如下:

{'Other': '1.05', 'United States': '93.67', 'Liberia': '3.26', '" alt="" />\n</p>\n</div>': '', 'Canada': '2.02'}

我知道我可以输入:del List_Of_Countries['Canada'] 这很好用,但我很难选择一个写着" alt="" />\n</p>\n</div>

我认为这是因为额外的双引号,但是我有一些列表有相似的条目,所以有没有一种简单的方法可以简单地搜索包含“alt”或“as a value of the key”的列表(以便我可以学习并将其应用于其他情况)?在


Tags: ofdiv内容列表条目altcountrieslist
3条回答

dpath可以解决这个问题。在

http://github.com/akesterson/dpath-python

只需设置一个filter函数来检查与glob匹配的字符串的内容,并将其传递给delete函数。因此,如果你想删除的内容存在于字典中:

$ easy_install dpath
>>> def filter(x):
>>> ... return (str(x) == r'" alt="" />\n</p>\n</div>')
>>> ...
>>> dpath.util.delete(MY_DICT, '*', filter=filter)

。。。。这将删除字典中与过滤器函数中定义的字符串匹配的所有对象。在

>>> x = {'Other': '1.05', 'United States': '93.67', 'Liberia': '3.26', '" alt="" />\n</p>\n</div>': '', 'Canada': '2.02'}
>>> del x['Canada']
>>> x
{'United States': '93.67', 'Liberia': '3.26', 'Other': '1.05', '" alt="" />\n</p>\n</div>': ''}
>>> del x['" alt="" />\n</p>\n</div>']
>>> x
{'United States': '93.67', 'Liberia': '3.26', 'Other': '1.05'}

基于某个表达式动态选择密钥是不可能的,因为字典是作为哈希映射实现的,所以密钥是在内部散列的。因此,不可能找到一个由某个组成的键,因为散列会产生完全其他的东西。在

唯一能做的就是(显然)遍历所有元素并找到正确的元素。在

a = {'Other': '1.05', 'United States': '93.67', 'Liberia': '3.26', '" alt="" />\n</p>\n</div>': '', 'Canada': '2.02'}
b = {}

for k, v in a.iteritems():
    if v == ''  or "alt" in k:
        pass
    else:
        b[k] = v
print b

一个不优雅但有效的解决方案:D

相关问题 更多 >