私の作業コードです。あまり速くはないが、働いている。最適化を歓迎します。
def fill(root, prefix, value, parent, pkey):
if len(prefix) > 1:
if prefix[0] in root:
fill(root[prefix[0]], prefix[1:], value, root, prefix[0])
if pkey:
if len(parent[pkey]) == 10:
parent[pkey] = value
elif type(root) == type({}):
root[prefix[0]] = {}
fill(root[prefix[0]], prefix[1:], value, root, prefix[0])
if pkey:
if len(parent[pkey]) == 10:
parent[pkey] = value
elif type(root) == type({}):
root[prefix[0]] = value
if pkey:
if len(parent[pkey]) == 10:
parent[pkey] = value
return root
def compact(prefixes, current):
if not type(prefixes) == type({}):
return [current]
else:
rlist = []
for k, v in prefixes.iteritems():
rlist.extend(compact(v, current + k))
continue
return rlist
if __name__ == '__main__':
plist = {}
for x in range(4440000, 4490000):
fill(plist, str(x), 'value', plist, None)
#print plist
print compact(plist, '')
自分_anything_しようとしたことがありますか?私たちはあなたのために完全な解決策を書くのではありません。他のニュースでは、プレフィックスはどういうものですか?私は '333'と仮定していますが、あなたの質問は指定していません。 – Bojangles
私はコードを探していません。私は射撃を探しています。プレフィックスは、10文字、100文字、1000文字などの文字列を含む最長の「文字列」です。 – vpol