From 89562a172fd3efa032f60714d600407c6cfe2c2f Mon Sep 17 00:00:00 2001 From: Yanbo Liang Date: Thu, 10 Sep 2015 13:54:20 -0700 Subject: [SPARK-7544] [SQL] [PySpark] pyspark.sql.types.Row implements __getitem__ pyspark.sql.types.Row implements ```__getitem__``` Author: Yanbo Liang Closes #8333 from yanboliang/spark-7544. --- python/pyspark/sql/types.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'python') diff --git a/python/pyspark/sql/types.py b/python/pyspark/sql/types.py index 8bd58d69ee..1f86894855 100644 --- a/python/pyspark/sql/types.py +++ b/python/pyspark/sql/types.py @@ -1176,6 +1176,8 @@ class Row(tuple): >>> row = Row(name="Alice", age=11) >>> row Row(age=11, name='Alice') + >>> row['name'], row['age'] + ('Alice', 11) >>> row.name, row.age ('Alice', 11) @@ -1243,6 +1245,19 @@ class Row(tuple): """create new Row object""" return _create_row(self, args) + def __getitem__(self, item): + if isinstance(item, (int, slice)): + return super(Row, self).__getitem__(item) + try: + # it will be slow when it has many fields, + # but this will not be used in normal cases + idx = self.__fields__.index(item) + return super(Row, self).__getitem__(idx) + except IndexError: + raise KeyError(item) + except ValueError: + raise ValueError(item) + def __getattr__(self, item): if item.startswith("__"): raise AttributeError(item) -- cgit v1.2.3