地图的字符串表示

时间:2015-02-25 07:03:59

标签: python

问题:如何以下列格式返回地图的字符串表示形式:{k1:v1,k2:v2,...,kN:vN} ??基本上我该如何定义__repr __?

我会这样做:format = {k1:v1,k2:v2,...,kN:vN} strForm = str(form) 打印(strForm)...

讲义:

  • map是用于存储数据记录集合的容器 每条记录与唯一键相关联。关键部分 必须具有可比性。 •Map():创建一个新的空地图。 • 长度(): 返回地图中键/值对的数量。 •包含(键): 返回一个布尔值,指示给定的键是否在地图中。 • setitem(key,value):如果是键,则向地图添加新的键/值对 不在地图上。如果键位于地图中,则替换新值 与密钥关联的原始值。 •getitem(key):返回 与给定键关联的值,必须存在。 •clear(): 通过删除所有键/值对来清除或清空地图。 •keys(): 返回包含存储在地图中的键的列表。 •values(): 返回包含存储在地图中的值的列表。 •toString(): 以下列格式返回地图的字符串表示形式: {k1:v1,k2:v2,...,kN:vN}

我的代码(测试并运行良好):

class Map :

def __init__( self) :
    self._key = list()
    self._value = list()

def __len__( self, key) :
    return len(self._key)

def __contains__( self, key) :
    if key in self._key :
        return True
    else:
        return False

def __setitem__( self, key, value) :
    if key in self._key :
        pos = self._key.index(key)
        self._value[pos] = value
    else :
        self._key.append(key)
        self._value.append(value)

def __getitem__( self, key) :
    assert key in self._key
    keypos = self._key.index(key)
    return self._value[keypos]

def clear( self) :
    self._key = list()
    self._value = list()
    return 

def keys( self) :
    return self._key

def values( self ) :
    return self._value

def __repr__( self ):

2 个答案:

答案 0 :(得分:3)

如果您真的想为自己创建字典中的所有内容,我会按以下方式编写__repr__方法

"{%s}" % (", ".join(["%s:%s" % (k,v) for k, v in zip(self._key, self._value)]))

答案 1 :(得分:1)

我会覆盖__str____repr__,如下所示:

def __repr__(self):
    return '{%s}' % ', '.join(['{}:{}'.format(k, v) for k, v in zip(self._key, self._value)])