将值添加到列表并转换为元组列表
add value to a list and convert to list of tuples
我正在阅读一些日志文件,并且有一个 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),)
有人可以为我提供一些帮助以获得所需的输出吗?
谢谢
在代码语句 final_list = tuple(combined_list)
中将 list
转换为 tuple
。
因此,如果您希望输出为 list
并且列表项为 tuple
,那么您可以删除上面的语句。
通过代码中的 print combined_list
语句进行检查。
>>> urls = """
... http://domain1.com
... http://domain2.com
... http://domain3.com
... http://domain4.com"""
>>> print [(i, 3) for i in urls.split('\n') if i.strip()]
[('http://domain1.com', 3), ('http://domain2.com', 3), ('http://domain3.com', 3), ('http://domain4.com', 3)]
使用列表理解
#split urls with comma
separated_urls = url.split('\n')
final_list = [(url,3) for url in separated_urls]
编辑:使用 split('\n')
或(split()
作为默认换行符)拆分 url 列表而不是 split(', ')
您可以通过两种方式轻松完成。
1) 老派的 for 循环方式:
output_list = []
for url in url.split():
output_list.append((url, 3))
2) 或列表理解方式,如@Trengot 所述:
output_list = [(url, 3) for url in url.split()]
如果您希望对列表进行任何更改并在创建 output_list 之前进行更多检查,那么老式方法更适合。对于简单的情况(即使有条件检查),列表理解是可行的方式:-)
编辑:通读您的评论,我猜您需要通过“\n”字符而不是逗号分隔它们。相应地更新了代码,默认情况下将字符拆分为“\n”。
很高兴您找到了答案。
您的代码在以下几行之前都是准确的
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)]
我正在阅读一些日志文件,并且有一个 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),)
有人可以为我提供一些帮助以获得所需的输出吗?
谢谢
在代码语句 final_list = tuple(combined_list)
中将 list
转换为 tuple
。
因此,如果您希望输出为 list
并且列表项为 tuple
,那么您可以删除上面的语句。
通过代码中的 print combined_list
语句进行检查。
>>> urls = """
... http://domain1.com
... http://domain2.com
... http://domain3.com
... http://domain4.com"""
>>> print [(i, 3) for i in urls.split('\n') if i.strip()]
[('http://domain1.com', 3), ('http://domain2.com', 3), ('http://domain3.com', 3), ('http://domain4.com', 3)]
使用列表理解
#split urls with comma
separated_urls = url.split('\n')
final_list = [(url,3) for url in separated_urls]
编辑:使用 split('\n')
或(split()
作为默认换行符)拆分 url 列表而不是 split(', ')
您可以通过两种方式轻松完成。
1) 老派的 for 循环方式:
output_list = []
for url in url.split():
output_list.append((url, 3))
2) 或列表理解方式,如@Trengot 所述:
output_list = [(url, 3) for url in url.split()]
如果您希望对列表进行任何更改并在创建 output_list 之前进行更多检查,那么老式方法更适合。对于简单的情况(即使有条件检查),列表理解是可行的方式:-)
编辑:通读您的评论,我猜您需要通过“\n”字符而不是逗号分隔它们。相应地更新了代码,默认情况下将字符拆分为“\n”。
很高兴您找到了答案。 您的代码在以下几行之前都是准确的
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)]