如何将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)
下面是我用来获取数据的文件。
teraform101
azure233
teraform221
teraform223
teraform224
teraform101
azure109
teraform223
teraform226
teraform225
azure233
{ 'teraform101\n', 'azure233\n', 'teraform223\n' }
teraform101
azure233
teraform223
答案 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