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

まず、検索用のインデックスを維持することをお勧めします。検索エンジンを使用することもできますが、Python マップは貧乏人の検索エンジンとしても機能します。そのため、ユーザー名が所属するレコードを指す逆インデックスを作成することをお勧めします。リンクされたすべてのアカウントを検索するには、無限再帰パスを削減するメモ化された再帰関数を作成できます。また、あなたが大きな番号を持っている場合にも。再帰を定義済みの最大レベルに制限できます。

于 2013-09-16T03:39:51.500 に答える
0

あなたが何をしようとしているのかを伝えるのは本当に難しいですが、私はあなたがそれを複雑にしすぎていると思います. データ構造は辞書に適しています。ridキーと値として使用してロードしないのはなぜnamesですか?

于 2013-09-16T03:43:05.523 に答える