[英]How to update a dictionary with nested list using a dictionary?
我得到了以下字典network_values
network_values = {
0: "CGR cinémas",
1: "Ville de Choisy-le-Roi",
2: "Pathé Gaumont",
3: "UGC",
4: "Cinéode",
5: "Magestic",
6: "Cinéville",
7: "cinebus",
8: "CGR",
9: "Utopia",
10: "Écran mobile 74"
}
我有另一个字典, theater_values
,嵌套列表
theater_values = {
"0":[
"node/4522090127",
1.0,
300.0,
"Saint-Jean-Pied-de-Port",
"nan"
],
"1":[
"node/563839797",
2.0,
239.0,
"Barbezieux-Saint-Hilaire",
"nan"
],
"2":[
"node/5472582580",
"nan",
"nan",
"Lezay",
"nan"
],
"3":[
"node/7623662713",
2.0,
280.0,
"Montaigu-Vendée",
"nan"
],
"4":[
"node/4115072853",
1.0,
274.0,
"Chalonnes-sur-Loire",
"nan"
],
"5":[
"node/5250851417",
3.0,
341.0,
"Thiers",
"nan"
],
"6":[
"way/83676895",
3.0,
534.0,
"Argentan",
"nan"
],
"7":[
"node/502262289",
8.0,
1898.0,
"Tours",
"CGR cinémas"
],
"8":[
"node/3475038904",
"nan",
"nan",
"Saint-Étienne",
"nan"
],
"9":[
"way/146090090",
"nan",
"nan",
"Marcoussis",
"nan"
],
"10":[
"way/66143799",
"nan",
"nan",
"Choisy-le-Roi",
"Ville de Choisy-le-Roi"
],
"11":[
"node/7768900435",
12.0,
2139.0,
"Paris",
"Pathé Gaumont"
]
}
目的是当像CGR cinémas
cinémas 这样的值存在于theater_values
和network_values
的嵌套列表中时,我使用network_values
的键更新theater_values
。
如果网络值和theater_values
中network_values
CGR cinémas
,我会将theater_values
值更新为0
(可能是整数或字符)。
这就是我所做的,但它没有做它应该做的事情
def proto_csv(theater_values):
network_values = {0: 'CGR cinémas', 1: 'Ville de Choisy-le-Roi', 2: 'Pathé Gaumont', 3: 'UGC', 4: 'Cinéode', 5: 'Magestic', 6: 'Cinéville', 7: 'cinebus', 8: 'CGR', 9: 'Utopia', 10: 'Écran mobile 74}
for keys_theaters,vals_theaters in theater_values.items():
for keys_networks,vals_networks in network_values.items():
if vals_theaters == vals_networks:
theater_values[keys_theaters] = str(keys_networks)
return theater_values
我对如何做到这一点有点困惑,因为我的代码实际上并没有给我想要的结果或任何结果......
更新的结果是这样的
theater_values = {
"0":[
"node/4522090127",
1.0,
300.0,
"Saint-Jean-Pied-de-Port",
"nan"
],
"1":[
"node/563839797",
2.0,
239.0,
"Barbezieux-Saint-Hilaire",
"nan"
],
"2":[
"node/5472582580",
"nan",
"nan",
"Lezay",
"nan"
],
"3":[
"node/7623662713",
2.0,
280.0,
"Montaigu-Vendée",
"nan"
],
"4":[
"node/4115072853",
1.0,
274.0,
"Chalonnes-sur-Loire",
"nan"
],
"5":[
"node/5250851417",
3.0,
341.0,
"Thiers",
"nan"
],
"6":[
"way/83676895",
3.0,
534.0,
"Argentan",
"nan"
],
"7":[
"node/502262289",
8.0,
1898.0,
"Tours",
"O" #here
],
"8":[
"node/3475038904",
"nan",
"nan",
"Saint-Étienne",
"nan"
],
"9":[
"way/146090090",
"nan",
"nan",
"Marcoussis",
"nan"
],
"10":[
"way/66143799",
"nan",
"nan",
"Choisy-le-Roi",
"Ville de Choisy-le-Roi"
],
"11":[
"node/7768900435",
12.0,
2139.0,
"Paris",
"1" #here
]
}
首先是关闭字典中'Écran mobile 74
的引号,因为您粘贴的代码返回SyntaxError
。
然后,在if
语句中,您当前正在将字典与字符串进行比较,因此表达式永远不会为真。 您想查看字符串是否在字典值中,如果是,则更新字典的该元素:
if vals_networks in vals_theaters:
theater_values[keys_theaters][vals_theaters.index(vals_networks)] = str(keys_networks)
这给出了 output:
{
'0': ['node/4522090127', 1.0, 300.0, 'Saint-Jean-Pied-de-Port', 'nan'],
'1': ['node/563839797', 2.0, 239.0, 'Barbezieux-Saint-Hilaire', 'nan'],
'2': ['node/5472582580', 'nan', 'nan', 'Lezay', 'nan'],
'3': ['node/7623662713', 2.0, 280.0, 'Montaigu-Vendée', 'nan'],
'4': ['node/4115072853', 1.0, 274.0, 'Chalonnes-sur-Loire', 'nan'],
'5': ['node/5250851417', 3.0, 341.0, 'Thiers', 'nan'],
'6': ['way/83676895', 3.0, 534.0, 'Argentan', 'nan'],
'7': ['node/502262289', 8.0, 1898.0, 'Tours', '0'],
'8': ['node/3475038904', 'nan', 'nan', 'Saint-Étienne', 'nan'],
'9': ['way/146090090', 'nan', 'nan', 'Marcoussis', 'nan'],
'10': ['way/66143799', 'nan', 'nan', 'Choisy-le-Roi', '1'],
'11': ['node/7768900435', 12.0, 2139.0, 'Paris', '2']
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.