如何将列表更改为特定字符串。

时间:2016-10-24 03:03:26

标签: python

GET: https://graph.windows.net/me?api-version=1.6

在__str__方法中。它应该返回一个字符串。

列表是Bag(['a','c','b','b','d','d','d'])。并且

class Bag:
    def __init__(self, i=None):
        self.bag = []
        if i == None:
            pass  # i is None, do nothing after create empty bag
        elif type(i)==list:
            self.bag.extend(i) # append whole list i into bag with extend method
        else:
            self.bag.append(i) # append single item i into bag 

    def __repr__(self):
        for s in self.bag :
            return s

    def __str__(self):
        for s in self.bag :
            return s

谁能告诉我如何让它发挥作用?非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以在此处使用collections.Counter来提供帮助:

def __str__(self):
    counts = Counter(self.bag)
    count_str = ','.join('{}[{}]'.format(k, v) for k, v in counts.items())
    return 'Bag({})'.format(count_str)

关于这一点的好处是,计数器完成了确定bag中每个项目的数量的所有工作。其余的只是格式化细节。一个缺点是计数器没有订购。如果您需要订单,可以使用.most_common方法(将从最常见到最不常见的方式排序),或者您可以使用ordered unique recipe之类的方法来确定您想要的方式在柜台上迭代。