是否有一个类似字典的数据结构允许搜索“key”和“value”

2024-05-23 21:25:00 发布

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

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

我不熟悉Python,所以我肯定忽略了一个简单的解决方案。在

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

Tags: 程序列表dictionary数字解决方案名字结构house
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))。你需要比这更好的吗?在

您可以使用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']

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

^{pr2}$

现在将名称更新为:

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

相关问题 更多 >