如何在 Python 中将 3 个列表合并到字典中
How to merge 3 lists into a dictionary in Python
origen = ['Philadelphia', 'New Orleans']
destino = ['Atlanta', 'Dallas', 'Columbus', 'Boston']
costo = [ ['2','6','6','2'] , ['1','2','5','7'] ]
我如何需要它们合并:
costo_envios={
Philadelphia:{
Atlanta:2
Dallas:6
Columbus:6
Boston:2
}
New Orleans:{
Atlanta:1
Dallas:2
Columbus:5
Boston:7
}
}
我想过可能使用 2 个嵌套的 'for',但我收到了“unlashable”错误,这意味着我使用了错误类型的索引。
我也试过这个:
costo_envio = {origen[l]:{destino[m]:costo[n]} for l,m,n in range(len(origen))}
但是我得到了这个错误:
TypeError: cannot unpack non-iterable int object
我该怎么做?
定义您想要的结构并让 Python 词典理解起作用。
res = {o: {d:c for d, c in zip(destino, co)} for o, co in zip(origen, costo)}
如果你觉得更容易阅读,你也可以构建2个嵌套的for循环。
您可以查看 Python 文档并开始研究 loops and the dict 文字语法。
这是一个实现,它使用 comprehensions 的概念和 zip 函数:
costo_envio = {o: {d: int(c) for d, c in zip(destino, co)} for o, co in zip(origen, costo)}
# {'Philadelphia': {'Atlanta': 2, 'Dallas': 6, 'Columbus': 6, 'Boston': 2},
# 'New Orleans': {'Atlanta': 1, 'Dallas': 2, 'Columbus': 5, 'Boston': 7}}
您可以使用 2 个 for 循环,外部循环迭代起点和成本列表,内部循环迭代目的地和成本。
这是我的代码,希望对您有所帮助!
origen = ['Philadelphia', 'New Orleans']
destino = ['Atlanta', 'Dallas', 'Columbus', 'Boston']
costo = [['2', '6', '6', '2'], ['1', '2', '5', '7']]
my_dict = {}
for origin, cost_list in zip(origen, costo):
my_dict[origin] = {}
for dest, cost in zip(destino, cost_list):
my_dict[origin][dest] = cost
利用成对列表可以变成字典的事实。
d = dict(zip(origen, (dict(zip(*pairs)) for pairs in zip([destino]*len(costo), costo))))
print(d)
origen = ['Philadelphia', 'New Orleans']
destino = ['Atlanta', 'Dallas', 'Columbus', 'Boston']
costo = [ ['2','6','6','2'] , ['1','2','5','7'] ]
我如何需要它们合并:
costo_envios={
Philadelphia:{
Atlanta:2
Dallas:6
Columbus:6
Boston:2
}
New Orleans:{
Atlanta:1
Dallas:2
Columbus:5
Boston:7
}
}
我想过可能使用 2 个嵌套的 'for',但我收到了“unlashable”错误,这意味着我使用了错误类型的索引。
我也试过这个:
costo_envio = {origen[l]:{destino[m]:costo[n]} for l,m,n in range(len(origen))}
但是我得到了这个错误:
TypeError: cannot unpack non-iterable int object
我该怎么做?
定义您想要的结构并让 Python 词典理解起作用。
res = {o: {d:c for d, c in zip(destino, co)} for o, co in zip(origen, costo)}
如果你觉得更容易阅读,你也可以构建2个嵌套的for循环。
您可以查看 Python 文档并开始研究 loops and the dict 文字语法。
这是一个实现,它使用 comprehensions 的概念和 zip 函数:
costo_envio = {o: {d: int(c) for d, c in zip(destino, co)} for o, co in zip(origen, costo)}
# {'Philadelphia': {'Atlanta': 2, 'Dallas': 6, 'Columbus': 6, 'Boston': 2},
# 'New Orleans': {'Atlanta': 1, 'Dallas': 2, 'Columbus': 5, 'Boston': 7}}
您可以使用 2 个 for 循环,外部循环迭代起点和成本列表,内部循环迭代目的地和成本。
这是我的代码,希望对您有所帮助!
origen = ['Philadelphia', 'New Orleans']
destino = ['Atlanta', 'Dallas', 'Columbus', 'Boston']
costo = [['2', '6', '6', '2'], ['1', '2', '5', '7']]
my_dict = {}
for origin, cost_list in zip(origen, costo):
my_dict[origin] = {}
for dest, cost in zip(destino, cost_list):
my_dict[origin][dest] = cost
利用成对列表可以变成字典的事实。
d = dict(zip(origen, (dict(zip(*pairs)) for pairs in zip([destino]*len(costo), costo))))
print(d)