У меня есть код, который я пытаюсь ускорить.Может быть, то, что у меня есть, правильно, но всякий раз, когда я спрашиваю о StackOverflow, кто-то обычно знает хитрый маленький трюк «Используйте карту!», «Попробуйте эту лямбду» или «import iteratetools», и я надеюсь, что кто-то может помочь здесь.Это раздел кода, который меня интересует:
#slowest part from here....
for row_dict in json_data:
row_dict_clean = {}
for key, value in row_dict.items():
value_clean = get_cleantext(value)
row_dict_clean[key] = value_clean
json_data_clean.append(row_dict_clean)
total += 1
#to here...
Концепция довольно проста.У меня есть list
многомиллионного размера, который содержит словари, и мне нужно пропустить каждый value
через немного чище.Затем я получаю хороший список очищенных словарей.Любой умный iterate
инструмент, который я не знаю, который я должен использовать?Вот более полный MVE, чтобы помочь поиграть с ним:
def get_json_data_clean(json_data):
json_data_clean = []
total = 0
#slowest part from here....
for row_dict in json_data:
row_dict_clean = {}
for key, value in row_dict.items():
value_clean = get_cleantext(value)
row_dict_clean[key] = value_clean
json_data_clean.append(row_dict_clean)
total += 1
#to here...
return json_data_clean
def get_cleantext(value):
#do complex cleaning stuffs on the string, I can't change what this does
value = value.replace("bad", "good")
return value
json_data = [
{"key1":"some bad",
"key2":"bad things",
"key3":"extra bad"},
{"key1":"more bad stuff",
"key2":"wow, so much bad",
"key3":"who dis?"},
# a few million more dictionaries
{"key1":"so much bad stuff",
"key2":"the bad",
"key3":"the more bad"},
]
json_data_clean = get_json_data_clean(json_data)
print(json_data_clean)
Каждый раз, когда я вкладывал в петли маленькие колокольчики в моей голове, вероятно, есть лучший способ сделать это.Любая помощь приветствуется!