是否存在类似字典的数据结构,允许搜索“key”和“value”

时间:2011-04-08 18:46:04

标签: python data-structures map

我需要一个用于我的小Python程序的结构来保存名单的最多500个名称,每个名称都有一个数字。名称将是唯一的,但数字将重复(通常)。我首先想到的是dictionary,但我还需要能够搜索这些数字,例如我需要将所有2更改为3。你会推荐什么?

我是Python的新手,所以我确信我忽略了一个简单的解决方案。

("Spiderman",1)
("Dr. House",2)
("Jon Skeet",1)

2 个答案:

答案 0 :(得分:3)

您可以使用dict,并按值搜索:

names = {"Spiderman":1, "Dr. House":2, "Jon Skeet":1}

resulting_keys = [k for k, v in names.iteritems() if v == 1]
# returns ['Spiderman', 'Jon Skeet']

然后你可以做类似的事情:

 names.update(dict((k,names[k] + 1) for k in resulting_keys))

现在将更新名称:

{'Jon Skeet': 2, 'Dr. House': 2, 'Spiderman': 2}

答案 1 :(得分:2)

字典会起作用。如果您需要更改存储的值:

>>> d = {"SpiderMan":1, "Dr.House":2, "Jon Skeet":1}
>>> for k,v in d.items():
...     if v == 1:
...         d[k] = v+1
...         
...     
... 
>>> d
{'SpiderMan': 2, 'Dr.House': 2, 'Jon Skeet': 2}

这将是线性搜索(O(n))。你还需要更好吗?