0

我不认为这是重复的,但我可能没有在搜索中使用正确的术语。如果是这种情况,我很抱歉。

我所拥有的是将元组(自定义对象,字符串)映射到浮点数的字典。确切地说,它是一个 2 元组。我想要做的是取回字典中与自定义对象匹配的所有条目的表示。

例子:

mydict[(co1, 'hello')] = 0.01
mydict[(co2, 'bye')] = 0.02

其中 co1 和 co2 应该代表两个不同的自定义对象。我想在关键的元组中找到所有包含 co1 (它的逻辑等价物)的条目。

所以我的问题是当字符串是唯一的(不匹配的)元组时,如何将这个 2_tuple=>float 字典减少为 string=>float 字典。

我试过的:

for custom in custom_object:
    for k, v in mydict.iteritems():
        if custom in k:
           #store this particular entry into another data structure or otherwise process
4

2 回答 2

1

您可以在理解中使用解包:

dict((s, v) for (o, s), v in mydict.iteritems() if o is co1)

从 Python 2.7 开始:

{s: v for (o, s), v in mydict.iteritems() if o is co1}
于 2012-08-22T16:19:32.130 回答
0

听起来随着语料库[?] 大小的增加,您尝试做的事情将变得非常低效。

也许您想要做的是散列[0] [1]进入第三个分配:[2]将存储在字典中。

然后在 tuple 的第四个分配上简单地存储一个指针数组(我知道它是 python,但是你这很容易通过重复来实现)[3]

通过保留一个辅助结构来存储元组是否已[3]填充(以及可能的计数),您将能够在几乎保证的 O(1) 中执行这些查询:

  1. 枚举所有重复
  2. 枚举 0.01 外观或无
  3. 我插入的内容是重复的吗?

享受:]

于 2012-08-22T16:31:12.840 回答