作为一个更大练习的一部分,我正在尝试基于较小列表的输入构建一个字典,但是正在努力进行嵌入式迭代。假设我有以下示例:
cities = ['newyork','london','tokyo','paris']
citypairs = [i for i in it.combinations(cities,2)]
airlines = ['delta', 'united']
我想构建一个字典字典“info”,它的键是上面城市+每个航空公司的组合(总共12个键),每个键都包含一个“city1”和一个“city2”键,使用citypairs列表填充。我在尝试这样的事情:
info = {
'{city1}/{city2} {airline}'.format(city1=city1, city2=city2, airline=airline): {
"city1": city1, "city2": city2
for city1, city2 in citypairs
}
for city1, city2 in citypairs
for airline in airlines
}
但是我收到一个无效的语法错误。为了更清楚地说明我所追求的是什么,如果不是上述尝试,我会:
info = {
'{city1}/{city2} {airline}'.format(city1=city1, city2=city2, airline=airline): {
"city1": "whatever", "city2": "whatever"
}
for city1, city2 in citypairs
for airline in airlines
}
然后,它将运行并为“info”中的每个键为city1和city2创建“whatever”的伪值
这个例子可能看起来很愚蠢或过于复杂,但我的问题的核心是如何遍历一个元组列表来填充这个例子中的city1和city2——我追求这个,因为我正在从事的实际项目需要这种灵活性
我相信解决方案比你想的要简单:
输出
{'伦敦/东京三角洲':{'city1':'伦敦','city2':'东京'},'纽约/伦敦三角洲':{'city1':'纽约','city2':'伦敦'},'伦敦/巴黎三角洲':{'city1':'伦敦','city2':'巴黎'},'伦敦/东京联合':{'city1':'伦敦','city2':'东京'},'东京/巴黎联合':{'city1':'东京','city2':'巴黎'},'纽约/巴黎三角洲':{'city1':'newyork','city2':'paris'},'东京/巴黎三角洲':{'city1':'tokyo','city2':'paris'},'纽约/巴黎联合':{'city1':'newyork','city2':'paris'},'伦敦/巴黎联合':{'city1':'london','city2':'paris'},'纽约/伦敦联合':{'city1':'newyork','city2':'london'},'纽约/东京三角洲':{'城市1':'纽约','城市2':'东京'},'纽约/东京联合':{'城市1':'纽约','城市2':'东京'}
纽约
收益率:
在这里,我使用了更简洁的
format()
形式,它查看局部变量以查找格式字符串的内容。你知道吗你很接近你想要的东西。不知道为什么要用
"whatever"
输入第二级dict
的值,因为您已经在理解中生成了city1
和city2
变量。只用这些就完成了电路。你知道吗相关问题 更多 >
编程相关推荐