Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
761 views
in Technique[技术] by (71.8m points)

python - Implementing ast.literal_eval on a numpy array

With the following expression, you can convert a string to a python dict.

>>> import ast
>>> a = ast.literal_eval("{'muffin' : 'lolz', 'foo' : 'kitty'}")
>>> a
{'muffin': 'lolz', 'foo': 'kitty'}

And with the following expression, you can get the "foo" value:

>>> a.get('foo')

I have an array of strings which are similar to python dict format.

Firstly, I want to convert all of them to dict, so I will be able to create a dict array.

Secondly, I want to get all "foo" values from that dict array, so I will be able to create a "foo" array.

How can I manage this?

Thanks,

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Is this approximately what you're after?

import ast
import numpy
a = numpy.array(["{'foo':123}","{'foo':234}"])
numpy.fromiter((ast.literal_eval(s)['foo'] for s in a), numpy.int_)

(Of course the appropriate dtype will depend on what's actually in those dicts.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...