如何将列表附加到生成器?

2024-09-29 01:37:06 发布

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

我在属性文件中列出了国家和地区的列表,生成器是这样创建的

lvls = {"Belgium": "EUR", "GER": "EUR"}
data_gen = ((f'{idx}', f'{lvl}') for idx, lvl in lvls.items())

生成器list(data_gen)的输出为

[('Belgium', 'EUR'), 
('Germany', 'EUR'),
....]

我获取lvls的每个键,它是country,并从数据库中获取它的country,现在我想把它附加到生成器中,比如输出应该是

[('Brussel','Belgium', 'EUR'),('Gent','Belgium', 'EUR'),('Bruge','Belgium', 'EUR')]

但不确定如何使用重复的国家和地区现有值将其附加到生成器中

因此,最终的生成器将是

[('Brussel','Belgium', 'EUR'),('Gent','Belgium', 'EUR'),('Bruge','Belgium', 'EUR'),  
( 'Berlin','Germany', 'EUR'),( 'Frankfurt','Germany', 'EUR')
....]

Tags: data属性国家eurcountry地区genidx
2条回答

假设数据库查询以这种方式返回输出:database = {"Belgium":["Brussels", "Gent", "Bruge"], "Germany":["Berlin", "Frankfurt"]}。您可以使用列表理解来实现您的目标:

lvls = {"Belgium": "EUR", "Germany": "EUR"}
database = {"Belgium":["Brussels", "Gent", "Bruge"], "Germany":["Berlin", "Frankfurt"]}
one = [(y,x,lvls[x]) for x,sub in database.items() for y in sub]
print(one)

Output

[('Brussels', 'Belgium', 'EUR'), ('Gent', 'Belgium', 'EUR'), ('Bruge', 'Belgium', 'EUR'), ('Berlin', 'Germany', 'EUR'), ('Frankfurt', 'Germany', 'EUR')]

假设数据库的输出如下所示:

cities = [('Brussel', 'Belgium'), ('Gent', 'Belgium'), ('Frankfurt', 'Germany')]

然后你可以用你已经有的口述,像这样:

((city, country, lvls[country]) for city, country in cities)

相关问题 更多 >