使用其他列表的元素创建空列表

2024-09-26 18:17:35 发布

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

我有一份年份清单:

years = ["2020", "2019", "2018", "2017", "2016", "2015", "2014", "2013"]

以及我想从网络抓取中获得的信息列表:

info = ["played_games", "games_won", "efectivity", "championship_won", "finals", "semi-finals", "quarterfinals"]

我需要迭代年份,这样我就可以用info+对应年份中的元素名称制作空列表,这样我就可以在以后附加信息,即:

played_games2020 = []
games_won2020 = []
efectivity2020 = []
etc
played_games2019 = []
games_won2019 = []
efectivity2019 = []
etc

任何帮助都将不胜感激! 问候


Tags: 网络info信息列表etcgames年份finals
3条回答

使用2个循环,您可以尝试以下操作:

years = ["2020", "2019", "2018", "2017", "2016", "2015", "2014", "2013"]

info = ["played_games", "games_won", "efectivity", "championship_won", "finals", "semi-finals", "quarterfinals"]

all_arrays_dict = {}
for x in years:
  for y in info:
    all_arrays_dict[y+x] = []

print(all_arrays_dict)

这是输出字典:

{
  "played_games2020": [],
  "games_won2020": [],
  "efectivity2020": [],
  "championship_won2020": [],
  "finals2020": [],
  "semi-finals2020": [],
  "quarterfinals2020": [],
  "played_games2019": [],
  "games_won2019": [],
  .
  .
  .
}

编辑:

我认为一个更快的解决方案是使用dict comprehensionitertools.product。解决方案只是一行代码:

import itertools
example_dict = {x:[] for x in [x[0]+x[1] for x in itertools.product(info,years)]}

输出与以下解决方案相同

正如韩·索洛在他们的评论中所说,这似乎更合适。基本上,解决办法是:

from collections import defaultdict
example_dict = defaultdict(list)
for i in years:
   for j in info:
       example_dict[j+i]
print(example_dict)

产出:

defaultdict(list,
            {'championship_won2013': [],
             'championship_won2014': [],
             'championship_won2015': [],
             ...
             'semi-finals2018': [],
             'semi-finals2019': [],
             'semi-finals2020': []})

您可以创建一个包含n个空列表的列表。与n = len(info) * len(years)一起。位置0处的列表为(信息[0],年份[0]),位置1处的列表为(信息[0],年份[1])

如果您愿意,您还可以使用相同的原理(信息和年份的双循环)将名称存储在字符串列表中

相关问题 更多 >

    热门问题