我有2个数据结构 -
List包含一堆密钥。字典具有相同的键。至于每个键的值,我想在列表中存储相应元素的地址。这将实现什么:对于密钥,如果密钥存在与否,我会查找字典。如果key存在,则在列表中获取该元素的地址,然后获取/弹出/追加该元素。
我的问题:
我在字典中存储的内容是每个键的value
,我可以使用它来查看列表中的特定元素?密钥的索引将在列表中更改。例如,我可以弹出一个元素并将其插入到最后。这样就可以使字典中所有键的索引发生变化。因此,存储绝对索引不是我想要的。
列表示例,对其的一些操作以及结果列表。 L = [' 1',' 2',' 3']
Add '4' to list: L = ['1', '2', '3', '4']
Pop the last unused element: L = ['2', '3', '4']
Use the element '2': L = ['3', '4', '2']
Pop the last unused element: L = ['4', '2']
Add '1' to the list: L = ['4', '2', '1']
Add '5' to the list: L = ['4', '2', '1', '5']
Use '2' from the list: L = ['4', '1', '5', '2']
如您所见,元素的位置根据执行的操作而变化。如果我已经存储了元素的地址,使用字典将有助于避免搜索列表。
答案 0 :(得分:1)
l = ['A', 'B', 'C']
d = {'A': {'value': 'a', 'index': 0},
'B': {'value': 'b', 'index': 1},
'C': {'value': 'c', 'index': 2}}
l[d['B']['index']]
'B' # result!
编辑(请参阅下面的评论)
要创建或更新,请致电:
from collections import defaultdict as DefaultDict
def index_lookup(elements):
result = DefaultDict(list)
for index, key in enumerate(elements):
result[key].append(index)
return result
>>> l = ['e', 'l', 'e', 'm', 'e', 'n', 't', 's']
>>> index_lookup(l)
defaultdict(<type 'list'>, {'e': [0, 2, 4], 'm': [3], 'l': [1], 'n': [5], 's': [7], 't': [6]})
>>> l.pop(2)
'e'
>>> index_lookup(l)
defaultdict(<type 'list'>, {'e': [0, 3], 'm': [2], 'l': [1], 'n': [4], 's': [6], 't': [5]})
答案 1 :(得分:0)
列表元素的索引。
您可以将list元素的索引存储在字典中,然后使用list[index]
来获取该元素。
示例代码 -
lst = [5,4,3,2,1]
dict = {}
for idx, val in enumerate(lst):
dict[val] = idx
print(dict)
>> {5:0 ,4:1 ,3:2 ,2:3 ,1:4}
检索代码,假设n
是要检索的数字 -
if n in dict:
list[dict[n]]
答案 2 :(得分:0)
显然,这是不可能的。为了实现这一点,我需要创建类对象并存储上一个和下一个元素的ID,就像我们在链表中那样。