У меня есть рабочий код, который классифицирует данные на основе правил внутри словаря списка. Я хочу знать, можно ли сделать код более эффективным, избавляясь от вложенных циклов, используя понимание списка/словаря или .values ().Python 3 эффективно итерации по словарю списка
import pandas as pd
df=pd.DataFrame({'Animals': [ 'Python', 'Anaconda', 'Viper', 'Cardinal',
'Trout', 'Robin', 'Bass', 'Salmon', 'Turkey', 'Chicken'],
'Noise': ['Hiss','SSS','Hisss','Chirp','Splash','Chirp',
'Gulp','Splash','Gobble','Cluck'],
})
snakenoise =['Hiss','SSS','Hisss', 'Wissss', 'tseee']
birdnoise =['Chirp', 'squeak', 'Cluck', 'Gobble']
fishnoise =['Splash', 'Gulp', 'Swim']
AnimalDex = {'Snake':['0', 'slither',snakenoise],
'Bird':['2','fly', birdnoise],
'Fish':['0','swim',fishnoise],
}
df['movement'] = ''
for key, value in AnimalDex.items():
for i in range(len(AnimalDex[key][2])):
df.loc[df.Noise.str.contains(AnimalDex[key][2][i]),'movement'] = AnimalDex[key][1]
print (df)
Вот выход
Animals Noise movement
0 Python Hiss slither
1 Anaconda SSS slither
2 Viper Hisss slither
3 Cardinal Chirp fly
4 Trout Splash swim
5 Robin Chirp fly
6 Bass Gulp swim
7 Salmon Splash swim
8 Turkey Gobble fly
9 Chicken Cluck fly
С помощью всего лишь десяти записей вы не должны беспокоиться об эффективности. –
Вы понимаете, что переписка по спискам и словам делает то же самое, что и петли? Они не более или менее эффективны, и иногда их может быть труднее читать. – nathancahill
@Tichodroma Это просто образец псевдокода большего файла. Я не размещаю какой-то большой dict или код, чтобы просто заполнить пробел – ccsv