我在python中有字典,其键是元组,例如:
my-dict={(1,'a'):value1, (1,'b'):value2, (1,'c'):value3, (2,'a'):value4,
(2,'b'):value5,(3,'a'):value6}
我需要访问其键具有相同第一个参数的所有值。例如,我需要访问
{(1,'a'):value1, (1,'b'):value2, (1,'c'):value3}
因为它们都具有1
元组键的第一个元素。一种方法是使用for
和if
:
for key in my-dict:
if key[0]==1:
do something
但是,我的实际字典和数据非常庞大,此方法需要大量时间。还有其他有效方法吗?
如果您必须再次搜索所有字典键,则会失去创建字典的好处。一个好的解决方案是创建另一个字典,该字典包含以正确的第一个元素开头的所有键。
my_dict={(1,'a'):'value1', (1,'b'):'value2', (1,'c'):'value3', (2,'a'):'value4',
(2,'b'):'value5',(3,'a'):'value6'}
from collections import defaultdict
mapping = defaultdict(list) #You do not need a defaultdict per se, i just find them more graceful when you do not have a certain key.
for k in my_dict:
mapping[k[0]].append(k)
现在的映射如下所示:
defaultdict(list,
{1: [(1, 'a'), (1, 'b'), (1, 'c')],
2: [(2, 'a'), (2, 'b')],
3: [(3, 'a')]})
现在,只需使用字典来查找原始字典中所需的键。
first_element = 1
#Now just use the lookup to do some actions
for key in mapping[first_element]:
value = my_dict[key]
print(value)
#Do something
输出:
value1
value2
value3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句