具有元组键的字典:所有具有相同第一个元素的元组

亚瑟

我在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元组键的第一个元素。一种方法是使用forif

for key in my-dict:
    if key[0]==1:
       do something

但是,我的实际字典和数据非常庞大,此方法需要大量时间。还有其他有效方法吗?

Paritosh辛格

如果您必须再次搜索所有字典键,则会失去创建字典的好处。一个好的解决方案是创建另一个字典,该字典包含以正确的第一个元素开头的所有键。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

除了第一个选定元素外,其余所有元素都具有样式吗?

如果元组具有相同的第一个元素,如何聚合元组列表中的元素?

如何在键(元组)的第一个元素上对字典进行排序

在显示第一个元素之后隐藏具有相同类的元素

Python对一个字典的元素求和是否具有相似的键(元组)

python:将具有相同第一个元素的元组的元素分组

具有GridLayoutManager的RecyclerView和具有不同viewHolder的第一个元素

具有元组键的字典比嵌套字典慢。为什么?

按元组的指定元素对具有元组键的字典进行排序

如何在2元组的集合中找到具有特定第一个元素的2元组?

如何保存具有元组键的字典

从具有类似键的元组创建字典

Powershell中具有元组键的字典

查找具有相同第一个元素的对的平均值。科特林

如何过滤一组(int,str)元组,以仅在第一个元素中返回具有最小值的元组?

如何转换所有元组的第一个元素,然后在Python中移动一个位置?

检查除第一个元素外的所有元素是否都具有特定类

将具有相同第一个元素的向量分组到向量列表中

mdx请求获取带有datetime的元组的第一个元素

SQL-获取所有第二个元素都被所有第一个元素共享的所有元组

合并具有至少一个公共元素的元组以形成一个公共元组

两个元素元组的列表转换为具有相同元素的元组列表

如何从元组列表字典的所有键中输出所有第一个元素?

在 Python 中的第一个键上具有默认值的嵌套字典

2个具有相同CSS的元素,只修改第一个

以元组为键的 Python 字典,以键为元组的第一个元素的新字典的键

从元组数组中删除在每个元素的第一个索引位置具有相同值的元素

是否有可以收集字典元组的第一个元素的单行代码?

有没有办法在列表中获得相同的第一个或第二个元素元组?