You have to use if/elif/elif/elif because you have to make sure you only call the animation one time. If it's repeated "ifs" you can get duplication. They should be a case with every possibility so only one will play that way. You have to use an equal zero or else do all the "ands" first.
if .x > 0 and .y==0:
play(walk_right)
otherwise test the angular ones first and if they fail, that will only leave the up/down and vertical.
if .x >0 and .y < 0:
play(angular motion)
elif .x<0 and .y > 0:
play(angular)
...
elif .x > 0:
play(go right)
You could do it that way too because you eliminated all the cases where both keys could be pressed first so that only leaves one key is pressed, otherwise there would be two trues: one when both keys are pressed, one where one key is pressed and it will run both statements and you would call the animation twice in the same frame.
There is a possibility that it isn't caused by two animations called at the same time, but that would be my first thought.