23

セットの内容を印刷しようとしていますが、印刷すると、印刷出力にセット識別子が表示されます。たとえば、これはset(['a', 'c', 'b', 'e', 'd', 'f', 'gg', 'ff', 'jk'])以下のコードの「出力」です。単語を削除したいと思いますset。私のコードは非常に単純で、以下にあります。

infile = open("P3TestData.txt", "r")
words = set(infile.read().split())
print words

簡単に参照できるように、ここでも出力を示します。set(['a', 'c', 'b', 'e', 'd', 'f', 'gg', 'ff', 'jk'])

4

5 に答える 5

52

印刷のためだけに、セットをリストに変換できます。

print list(words)

str.join()または、セットの内容をコンマで結合するために使用できます。

print ', '.join(words)
于 2013-03-10T22:59:26.940 に答える
3

このprintステートメントはset、の実装を使用し__str__()ます。あなたはできる:

  1. を使用する代わりに、独自の印刷機能を展開しprintます。より良いフォーマットを取得する簡単な方法は、代わりにlistの実装を使用することです。__str__()

    print list(my_set)

  2. 独自のサブクラスの__str__()実装をオーバーライドします。set

于 2013-03-10T23:01:57.557 に答える
2

このサブクラスは、数字と文字に対して機能します。

class sset(set):
    def __str__(self):
        return ', '.join([str(i) for i in self])

print set([1,2,3])
print sset([1,2,3])

出力

set([1, 2, 3])
1, 2, 3
于 2015-05-01T00:45:52.207 に答える
1

中括弧が必要な場合は、これを行うことができます。

>>> s={1,2,3}
>>> s
set([1, 2, 3])
>>> print list(s).__str__().replace('[','{').replace(']','}')
{1, 2, 3}

または、次の形式を使用します。

>>> print '{{{}}}'.format(', '.join(str(e) for e in set([1,'2',3.0])))
{3.0, 1, 2}
于 2013-03-11T00:56:21.390 に答える
1

Python 3で一連の数値を印刷する場合は、代わりにスライスを使用できます。

Python 3.3.5
>>> s = {1, 2, 3, 4}
>>> s
{1, 2, 3, 4}
>>> str(s)[1:-1]
'1, 2, 3, 4'

Python2に移植する場合、これはうまく変換されません...

Python 2.7.6
>>> s = {1, 2, 3, 4}
>>> str(s)[1:-1]
'et([1, 2, 3, 4]'
>>> str(s)[5:-2]
'1, 2, 3, 4'

一方、join()整数値にするには、最初に文字列に変換する必要があります。

Python 2.7.6
>>> strings = {'a', 'b', 'c'}
>>> ', '.join(strings)
'a, c, b'
>>> numbers = {1, 2, 3, 4}
>>> ', '.join(numbers)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> ', '.join(str(number) for number in numbers)
'1, 2, 3, 4'

ただし、これはスライスよりも正確です。

于 2014-06-18T14:08:10.987 に答える