Вы должны проанализировать это для списка словарей, а не для трех разных списков, связанных только по порядку данных.Как и в data = [ {"name": "John", "family": "Candy", "age": 72 }, ...]
Одна возможность, если вы не можете изменить источник данных, - это выполнить наивный анализ с помощью строковых методов, таких как split:
myString = "[name = john, family = candy, age = 72],[ name = jeff, family = Thomson, age = 24]"
data = []
for block in myString.split("]"):
if not block: break
block = block.split("[")[1]
entry_dict = {}
for part in block.split(","):
key, value = part.split("=")
key = key.strip()
value = value.strip()
if key == "age": value = int(value)
entry_dict[key] = value
data.append (entry_dict)
Или, если вына python 2.7 (или 3.1) и если вам нужен более короткий код, вы можете использовать генератор dict (вы можете использовать генераторы и в других версиях, просто создавая список кортежей и добавляя вызов dict):
myString = "[name = john, family = candy, age = 72], [name = jeff, family = Thomson, age = 24]"
data = []
for block in myString.split("]"):
if not block: break
block = block.split("[")[1]
entry_dict = {}
data.append ({(part.split("=")[0].strip(), part.split("=")[1].strip()) for part in block.split(",") })
(в этой версии не преобразовано "age"на цифры)