将set()结果输出值打印到换行符中

时间:2018-09-07 04:41:29

标签: python python-3.x

如何将python set输出值打印到换行符而不是单行列表值中。

下面是我用来获取两个文件之间公共值的代码。

def print_common_members(a, b):
        """
        Given two sets, print the intersection, or "No common elements".
        """
        print((a & b) or "No common elements")

    with open('file1.txt') as file1, open('file2.txt') as file2:
        dataset1 = set(file1)
        dataset2 = set(file2)
        print_common_members(dataset1, dataset2)

下面是我用来获取数据的文件。

file1.txt

teraform101
azure233
teraform221
teraform223
teraform224

file2.txt

teraform101
azure109
teraform223
teraform226
teraform225
azure233

结果:

{ 'teraform101\n', 'azure233\n', 'teraform223\n' }

所需结果

teraform101
azure233
teraform223

2 个答案:

答案 0 :(得分:1)

使用join在集合的元素中插入换行符。

print('\n'.join(a & b) or "No common elements")

此外,如前所述,如果每个字符中都有换行符,则可以连接一个空字符串以获得相同的结果:

print(''.join(a & b) or "No common elements")

或者,如果不想使用它,您可以使用一种理解方法,剥离并加入换行符:

print('\n'.join(s.strip('\n') for s in a & b) or "No common element")

所有这些都有效,因为当没有循环内容时,join返回一个空字符串:

In [60]: '\n'.join(set() & set())
Out[60]: ''

在python中,False是哪个。

答案 1 :(得分:1)

set具有查找intersection的专用方法。然后,您可以遍历交叉点并打印每个元素。

def print_common_members(a, b):
    """
    Given two sets, print the intersection, or "No common elements".
    """
    inter = a.intersection(b)
    if inter:   # empty sets are Falsy, non empty sets are Truthy 
        for elt in inter:
            print(elt)
    else:
        print("No common elements")

a = {1, 2, 3}
b = {2, 3, 4}
c = {7, 8, 9}
print_common_members(a, b)
print()
print_common_members(a, c)

输出:

2
3

No common elements