【问题标题】:Python Frozenset [duplicate]Python Frozenset [重复]
【发布时间】:2014-12-06 06:20:49
【问题描述】:

我正在使用frozenset,我想避免输出包含“frozenset”。例如,我有

x = [frozenset([item]) for item in Set]

Output: frozenset(['yes']) => frozenset(['red', 'blue'])

有什么想法吗?

【问题讨论】:

  • 那么你的预期输出是什么?
  • 我想要 (['yes']) => (['red', 'blue'])。基本上省略了“frozenset”。
  • 为什么?看到这个有什么问题?

标签: python string set frozenset


【解决方案1】:

您可以通过创建frozenset 的子类并覆盖其__repr__ 方法来做到这一点:

class MyFrozenSet(frozenset):
    def __repr__(self):
        return '([{}])'.format(', '.join(map(repr, self)))
...     
>>> lst = [['yes'], ['red', 'blue']]
>>> [MyFrozenSet(x) for x in lst]
[(['yes']), (['blue', 'red'])]

【讨论】:

  • 你不需要上课 - 使用课程对我来说似乎有点过头了。并像这样覆盖__repr__ 破坏了__repr__ 预期执行的语义。
  • "如果可能的话,[__repr__] 应该看起来像一个有效的 Python 表达式,可以用来重新创建具有相同值的对象(给定适当的环境)。如果这个不可能,应返回<...some useful description...> 形式的字符串。"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
相关资源
最近更新 更多