Nó đơn giản hơn so với phiên bản 1.8:
layer = qgis.utils.iface.activeLayer()
fields = layer.pendingFields()
field_names = [field.name() for field in fields]
hoặc trong một dòng
field_names = [field.name() for field in layer.pendingFields() ]
một sau
for elem in layer.getFeatures():
print dict(zip(field_names, elem.attributes()))
{u'adip': 17, u'dipdir': 130, u'tdip': 29}
{u'adip': 55, u'dipdir': 325, u'tdip': 75}
.....
Nói chung để khám phá một hàm mới, tôi sử dụng dir () hoặc mô-đun xem để kiểm tra những gì bên trong:
dir(fields)
['FieldOrigin', 'OriginEdit', 'OriginJoin', 'OriginProvider', 'OriginUnknown', '__class__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__len__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'append', 'at', 'clear', 'count', 'extend', 'field', 'fieldOrigin', 'fieldOriginIndex', 'indexFromName', 'isEmpty', 'remove', 'size', 'toList']
hoặc là
see(fields)
[] hash() help() len()
repr() str() .FieldOrigin() .OriginEdit
.OriginJoin .OriginProvider .OriginUnknown .append()
.at() .clear() .count() .extend()
.field() .fieldOrigin() .fieldOriginIndex()
.indexFromName() .isEmpty() .remove() .size()
.toList()
Và bạn có thể thấy rằng có một hàm field ()
print fields.field(0)
qgis.core.QgsField object at 0x163E39C0
và một trường có tên, loại, độ chính xác, ...:
see(fields.field(0))
< <= == != >
>= hash() help() repr()
str() .comment() .displayString() .length()
.name() .precision() .setComment() .setLength()
.setName() .setPrecision() .setType() .setTypeName()
.type() .typeName()
vì thế:
fields.field(0).name()
u'adip'
fields.field(0).type()
2
fields.field(0).typeName()
u'Integer'
fields.field(0).precision()
0
....
với .dataProvider ()
Đó là .field ()
....
prov = layer.dataProvider()
prov.fields().field(0).name()
u'adip'
prov.fields().field(0).typeName()
u'Integer'
và
field_names = [field.name() for field in prov.fields()]