向列表中添加值并转换为元组列表

2024-10-04 05:19:49 发布

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

我正在阅读一些日志文件,其中有一个URL列表,如下所示:

url看起来像这样,每个url后面都有新行

http://domain1.com
http://domain2.com
http://domain3.com
http://domain4.com

我现在想创建一个元组,并为每个url添加一个值。所有值都相同。 应该是这样的。你知道吗

('http://domain1.com', 3)
('http://domain2.com', 3)
('http://domain3.com', 3)
('http://domain4.com', 3)

最后,为了进一步处理,我需要一个元组列表,应该如下所示:

[('http://domain1.com', 3), ('http://domain2.com', 3), ('http://domain3.com',3)...]

这是我自己尝试的:

#split urls with comma
separated_urls = url.split(', ')
num__of_lines = sum(1 for line in separated_urls)

#make a list of 3s for the length of the url list
list_of_threes = [3] * num__of_lines

combined_list = zip(separated_urls, list_of_threes)
final_list = tuple(combined_list)
print final_list

这将提供以下输出:

(('http://domain1.com', 3),)
(('http://domain2.com', 3),)
(('http://domain3.com', 3),)
(('http://domain4.com', 3),)

有没有人能帮我一点忙,让我得到想要的结果?你知道吗

谢谢


Tags: ofcomhttpurl列表urlsnumlist
3条回答

你可以用两种方法轻松地做到。你知道吗

1)环线老派:

output_list = []
for url in url.split():
    output_list.append((url, 3))

2)或列表理解方式,如@Trengot所述:

output_list = [(url, 3) for url in url.split()]

如果您希望对列表进行任何更改,并在创建输出列表之前进行更多检查,则旧式方法更适合。对于简单的情况(即使有条件检查),列表理解是最好的方法:-)

编辑:通读您的评论,我想您需要将它们拆分为“\n”字符,而不是逗号分隔。相应地更新了代码,默认情况下使用“\n”拆分字符。你知道吗

使用列表理解

#split urls with comma
separated_urls = url.split('\n')
final_list = [(url,3) for url in separated_urls]

编辑:使用split('\n')或(split()作为默认换行符)来拆分url列表,而不是使用split(', ')

很高兴你找到了答案。 你的代码在以下几行之前都是准确的

url = "http://domain1.com, http://domain2.com, http://domain3.com, http://domain4.com"
separated_urls = url.split(', ')
list_of_threes = [3] * len(separated_urls)
combined_list = zip(separated_urls, list_of_threes)

问题是你的演员。把combined_list转换成list

print (list(combined_list))

宾果,你得到你的输出

[('http://domain1.com', 3), ('http://domain2.com', 3), ('http://domain3.com', 3), ('http://domain4.com', 3)]

相关问题 更多 >