Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm following this PyQgis workshop:

I have a point layer shapefile. I want to be able to retrieve and store x, y and name of each point( they already exist in attribute table and have indexes of 10, 11 and 1), hopefully in a dictionary format ((x,y) as key, name as value).

My problem starts here:

while provider.nextFeature(feat):
map = feat.attributeMap()  

I can't figure out how to use this 'map' dictionary. iterating through it I either get

"PyQt4.QtCore.QVariant object at 0x23C9C3B0" or "built-in method toString of QVariant object at 0x10D38D50".

any help is appreciated!

share|improve this question
up vote 1 down vote accepted

Use the toString() method on a QVariant object to get it's string value. There are a number of other methods (e.g. toInt(), toFloat(), toDouble() to name a few) for getting the value.

Here is an example:

>>> variant_string = QVariant('this is a string')
>>> variant_int = QVariant( 100)
>>> variant_string
<PyQt4.QtCore.QVariant object at 0x100f5abb0>
>>> variant_string.toString()
PyQt4.QtCore.QString(u'this is a string')
>>> str(variant_string.toString())
'this is a string'
>>> variant_int.toInt()
(100, True)

Notice that toInt() returns a tuple, the first element being the value and the second being a boolean indicating if the conversion to integer was successful.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.