【发布时间】:2016-09-01 23:22:25
【问题描述】:
作为更大练习的一部分,我正在尝试根据来自较小列表的输入来构建字典,但我正在为嵌入式迭代而苦苦挣扎。假设我有以下说明性示例:
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 - 我在这之后是因为我正在工作的现实项目on 需要这种灵活性
【问题讨论】:
-
info的期望值是多少? -
语法错误是
{"city1": city1, "city2": city2 for city1, city2 in citypairs}。那应该是什么?每个条目有两个条目的字典?还是您只想将这两个都添加为单独的条目,例如{k:v for city1, city2 in citypairs for k,v in (('city1', city1), ('city2', city2))}? -
所需示例:info[newyork/london delta][city1] 将等于“newyork”,...[city2] 将等于“London”。
标签: python list python-2.7 dictionary