将set()结果输出值打印到newlin中

2024-09-24 20:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将python集的输出值打印到换行符中,而不是打印到单行列表中。你知道吗

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

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)

下面是我用来获取数据的文件。。你知道吗

文件1.txt

teraform101
azure233
teraform221
teraform223
teraform224

文件2.txt

teraform101
azure109
teraform223
teraform226
teraform225
azure233

结果:

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

期望结果

teraform101
azure233
teraform223

Tags: or文件notxtaselementscommonopen
2条回答

使用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。你知道吗

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

相关问题 更多 >