Python pydicom中的ds.get()和ds.get_item()之间有什么区别

Python pydicom中的ds.get()和ds.get_item()之间有什么区别,python,pydicom,Python,Pydicom,有人知道FileDataset.get和FileDataset.get两种方法在Pydicom中的区别吗? 谢谢 我想你的答案就在这两个函数的源代码中。看起来像是将字符串和数据元素作为输入进行处理 def get(self, key, default=None): """Extend dict.get() to handle DICOM DataElement keywords. Parameters ---------- key

有人知道FileDataset.get和FileDataset.get两种方法在Pydicom中的区别吗?
谢谢

我想你的答案就在这两个函数的源代码中。看起来像是将字符串和数据元素作为输入进行处理

def get(self, key, default=None):
        """Extend dict.get() to handle DICOM DataElement keywords.

        Parameters
        ----------
        key : str or pydicom.tag.Tag
            The element keyword or Tag or the class attribute name to get.
        default : obj or None
            If the DataElement or class attribute is not present, return
            `default` (default None).

        Returns
        -------
        value
            If `key` is the keyword for a DataElement in the Dataset then
            return the DataElement's value.
        pydicom.dataelem.DataElement
            If `key` is a tag for a DataElement in the Dataset then return the
            DataElement instance.
        value
            If `key` is a class attribute then return its value.
        """
        if isinstance(key, (str, compat.text_type)):
            try:
                return getattr(self, key)
            except AttributeError:
                return default
        else:
            # is not a string, try to make it into a tag and then hand it
            # off to the underlying dict
            if not isinstance(key, BaseTag):
                try:
                    key = Tag(key)
                except Exception:
                    raise TypeError("Dataset.get key must be a string or tag")
        try:
            return_val = self.__getitem__(key)
        except KeyError:
            return_val = default
        return return_val





def get_item(self, key):
        """Return the raw data element if possible.

        It will be raw if the user has never accessed the value, or set their
        own value. Note if the data element is a deferred-read element,
        then it is read and converted before being returned.

        Parameters
        ----------
        key
            The DICOM (group, element) tag in any form accepted by
            pydicom.tag.Tag such as [0x0010, 0x0010], (0x10, 0x10), 0x00100010,
            etc. May also be a slice made up of DICOM tags.

        Returns
        -------
        pydicom.dataelem.DataElement
        """
        if isinstance(key, slice):
            return self._dataset_slice(key)

        if isinstance(key, BaseTag):
            tag = key
        else:
            tag = Tag(key)
        data_elem = dict.__getitem__(self, tag)
        # If a deferred read, return using __getitem__ to read and convert it
        if isinstance(data_elem, tuple) and data_elem.value is None:
            return self[key]
        return data_elem

我想你的答案在这两个函数的源代码中。看起来像是将字符串和数据元素作为输入进行处理

def get(self, key, default=None):
        """Extend dict.get() to handle DICOM DataElement keywords.

        Parameters
        ----------
        key : str or pydicom.tag.Tag
            The element keyword or Tag or the class attribute name to get.
        default : obj or None
            If the DataElement or class attribute is not present, return
            `default` (default None).

        Returns
        -------
        value
            If `key` is the keyword for a DataElement in the Dataset then
            return the DataElement's value.
        pydicom.dataelem.DataElement
            If `key` is a tag for a DataElement in the Dataset then return the
            DataElement instance.
        value
            If `key` is a class attribute then return its value.
        """
        if isinstance(key, (str, compat.text_type)):
            try:
                return getattr(self, key)
            except AttributeError:
                return default
        else:
            # is not a string, try to make it into a tag and then hand it
            # off to the underlying dict
            if not isinstance(key, BaseTag):
                try:
                    key = Tag(key)
                except Exception:
                    raise TypeError("Dataset.get key must be a string or tag")
        try:
            return_val = self.__getitem__(key)
        except KeyError:
            return_val = default
        return return_val





def get_item(self, key):
        """Return the raw data element if possible.

        It will be raw if the user has never accessed the value, or set their
        own value. Note if the data element is a deferred-read element,
        then it is read and converted before being returned.

        Parameters
        ----------
        key
            The DICOM (group, element) tag in any form accepted by
            pydicom.tag.Tag such as [0x0010, 0x0010], (0x10, 0x10), 0x00100010,
            etc. May also be a slice made up of DICOM tags.

        Returns
        -------
        pydicom.dataelem.DataElement
        """
        if isinstance(key, slice):
            return self._dataset_slice(key)

        if isinstance(key, BaseTag):
            tag = key
        else:
            tag = Tag(key)
        data_elem = dict.__getitem__(self, tag)
        # If a deferred read, return using __getitem__ to read and convert it
        if isinstance(data_elem, tuple) and data_elem.value is None:
            return self[key]
        return data_elem

这两种方法在用户代码中并不经常使用。Dataset.get是python的等价物;它允许您请求字典中的项,但如果数据集中不存在该项,则返回默认值。从数据集中获取项目的更常用方法是使用点表示法,例如

dataset.PatientName
或者通过标签号获取数据元素对象,例如

dataset[0x100010]
Dataset.get_项是一个较低级别的例程,主要用于某些传入数据出现错误时,需要在原始数据元素值转换为python标准类型int、float、string类型等之前进行更正


与关键字一起使用时,Dataset.get返回值,而不是DataElement实例。Dataset.get_项始终返回DataElement实例或RawDataElement实例。

这两种情况在用户代码中不常用。Dataset.get是python的等价物;它允许您请求字典中的项,但如果数据集中不存在该项,则返回默认值。从数据集中获取项目的更常用方法是使用点表示法,例如

dataset.PatientName
或者通过标签号获取数据元素对象,例如

dataset[0x100010]
Dataset.get_项是一个较低级别的例程,主要用于某些传入数据出现错误时,需要在原始数据元素值转换为python标准类型int、float、string类型等之前进行更正

与关键字一起使用时,Dataset.get返回值,而不是DataElement实例。Dataset.get_项始终返回DataElement实例或RawDataElement实例