Python:将一列添加到列表列表中,其中包含第三个列表提供的值



我有一个由函数生成的列表列表,可以有 0 到 300 个名称对之间的任何位置,数据如下所示:

sales reps = [('David', 'Anderson'), ('Darla', 'Becker'), ('Charlie', 'Davis')]

我还有一个列表叫做regions.

regions = ['Pacific', 'Midwest', 'East', 'Northwest', ...] 

我想向sales_reps添加第三列,通过遍历regions为其分配region,以便我最终得到:

sales reps_new = [('David', 'Anderson', 'Pacific'), ('Darla', 'Becker', 'Midwest'), ('Charlie', 'Davis', 'East')]

我已经尝试过zip(),但这切断了区域末尾的列表,因此如果sales_reps有 30 个条目而区域有 4 个条目,zip只会给我 4 个。

由于这些是更面向对象的概念,其中销售代表可以通过他们的名字和姓氏以及区域分配进行建模,因此将事情分解并给他们一个初级类是有意义的。

sales_reps = [('David', 'Anderson'), ('Darla', 'Becker'), ('Charlie', 'Davis')]
regions = ['Pacific', 'Midwest', 'East', 'Northwest']
class SalesRep:
def __init__(self, first, last):
self.first_name = first
self.last_name = last
self.region = None
def __str__(self):
return f"{self.last_name}, {self.first_name}t{self.region}"

people = []
for rep in sales_reps:
people.append(SalesRep(first=rep[0], last=rep[1]))
for region in regions:
for person in people:
if not person.region:
person.region = region
break
for person in people:
print(person)

尝试以下代码:

regionsCount = len(regions)
j=0
temp_list = list()
for i in sales_reps:
if j>=regionsCount:
j=0
temp = list(i)
temp.append(regions[j])
temp_list.append(tuple(temp))
j = j+1
sales_reps = temp_list

上面的代码将重复这些区域,如果它们小于列表sales_reps。

相关内容

最新更新