1

好的,所以我有一个名为“whois.txt”的文件,其中包含

 ["96363612", "@a2743, coil, charge"]
 ["12101258", "@a0272, climate, vault"]
 ["83157521", "sith"]
 ["33907120", "@a1321, missile, wired"]
 ["55553768", "@a2722, legal, illegal"]
 ["22686400", "@a5619, mindless, @a5637, bank"]
 ["97436430", "jedi, @a5770, charge, lantern, @a9491, legal"]
 ["91645905", "sith"]
 ["89514799", "lantern, @a2563, @a2693"]
 ["19658307", "Umbrechu"]
 ["56112504", "@a0473, lantern, kryptonian"]
 ["12195491", "riyoken"]
 ["53281943", "@a5135, gateway, jedi"]
 ["76515035", "@a4023, gateway, wired"]
 ["79444876", "@a2716, loyalty"]

我在这里所做的是使用 json 并使用第一个数字作为 ID,并且与 ID 关联的帐户由“,”链接。所以使用 python 我正在使用这段代码来尝试获取所有关联的帐户

 def getWhois(self):
    x = []
    f = open('whois.txt','r')
    for line in f.readlines():
        rid,names = json.loads(line.strip())
        x.append([rid,names])
    return x
 def recvWhois(self,user):
    returned = self.getWhois()
    x = []
    for data in returned:
        rid,names = data[0],data[1]
        if user in names:
            x.append(names)
            matches = list(set(', '.join(x).split(', ')))
    return matches

因此,所做的是获取您正在搜索的用户的匹配项,但我也想在这些匹配项中搜索用户,我已经这样做了,但感觉就像我必须无限次地研究匹配项被拉所以如果我做 self.recvWhois('missile') 它会拉 "['missile', 'wired', '@a1321']" 然后我会尝试搜索所有这些帐户以链接更多,并且到现在为止,您可能会看到我的问题,因为我必须执行 x 次,具体取决于与以前匹配的帐户相关联的匹配次数。

4

2 回答 2

0

很难说出你想要做什么,但我认为你让它变得太复杂了。您的数据结构适合字典。为什么不使用rid作为键和names值来加载它?

于 2013-09-16T03:43:05.523 回答
0

首先,我建议维护一个搜索索引。您可以使用搜索引擎,但 python 地图也可以用作穷人的搜索引擎。所以想法是有一个倒排索引,其中用户名指向他们所属的记录。为了搜索所有链接的帐户,您可以编写一个记忆递归函数,该函数将减少无限递归路径。此外,如果你有大号。您可以将递归限制到预定义的最大级别。

于 2013-09-16T03:39:51.500 回答