Mein Arbeitscode. Es ist nicht sehr schnell, aber funktioniert. Optimierungen willkommen.
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, '')
Haben Sie versucht _anything_ selbst? Wir sind nicht hier, um komplette Lösungen für Sie zu schreiben. In anderen Nachrichten, was genau ist das Präfix? Ich nehme '333' an, aber deine Frage spezifiziert nicht. – Bojangles
Ich bin nicht auf der Suche nach Code. Ich suche nach Direktion. Präfix ist der längste "String", der volle 10 oder 100 oder 1000 usw. enthält. – vpol