我正在尝试使用字典中的VALUE替换列表列表(在所有相关子列表中)中的值,并且无法使其正常工作。
字典的内容/细节如下:
dictionary = dict(zip(gtincodes, currentstockvalues))
字典包含成对的GTIN代码和当前值。因此,12121212(GTIN)对应于值(currentstockvalue)1,而12345670对应于值(currentstockvalue)0。
我现在需要查找已从文件中读入的列表 NEWDETAILS 。该列表基本上是列表列表。当打印newdetails(列表)时,输出为:
[['12345670', 'Iphone 9.0', '500', '5', '3', '5'], ['12121212', 'Samsung Laptop', '900', '5', '3', '5']]
需要做什么:
我想使用字典来更新和替换列表中的值(以及列表中的所有相关子列表)。因此,对于字典中的每个GTIN(键),每个子列表中的第三个索引(对应的GTIN)需要使用字典中的VALUE(currentstockvalue)进行更新。
在上面的例子中,对于子列表的子列表1-index [03](whcih当前为5)需要用2 ...(或者该GTIN的字典中的值)更新。第二个子列表也需要同样的事情。
我到目前为止的代码是:
for sub_list in newdetails:
sub_list[3] = dictionary.get(sub_list[3], sub_list[3])
print(sub_list)
上面只是产生了两个单独的子列表并打印出来。它不是替代品。
['12345670', 'Iphone 9.0', '500', '5', '3', '5']
['12121212', 'Samsung Laptop', '900', '5', '3', '5']
我的问题是:
如何将上述代码修改为LOOK UP THE DICTIONARY(以匹配每个子列表的索引[0]),并将每个子列表的第4个元素(索引[03])替换为字典中的VALUE相应的GTIN?
提前致谢。
更新
根据Alex P的建议(谢谢),我进行了以下编辑:
for sub_list in newdetails:
sub_list[3] = dictionary.get(gtin), sub_list[3]
print(sub_list)
它提供了一个替换(元组)而不仅仅是单个值 - 如下所示:
['12345670', 'Iphone 9.0', '500', (1, '5'), '3', '5']
['12121212', 'Samsung Laptop', '900', (1, '5'), '3', '5']
字典的内容:
12121212 3
0 0
12345670 1
12121212是gtin和' 3'是当前的股票。 我想查找字典,如果在newdetails列表中找到相应的GTIN,我想用newdetails列表中的第三个索引(第四个元素)替换字典中的相应值。所以 - 对于12121212,5将被替换为3.而对于12345670,5将被替换为1.
根据Moses K的建议更新
我试过这个 - 谢谢 - 但是......
for sub_list in newdetails:
sub_list[3] = dictionary.get(int(sub_list[0]), sub_list[3])
print(sub_list)
输出仍然只是两个(未更改的)子列表。
['12345670', 'Iphone 9.0', '500', '5', '3', '5']
['12121212', 'Samsung Laptop', '900', '5', '3', '5']
更新#2 - 都转换为int。
for sub_list in newdetails:
print("sublist3")
print(sub_list[3])
sub_list[3] = dictionary.get(int(sub_list[0]), (int(sub_list[3])))
print(sub_list)
仍然产生以下输出:
['12345670', 'Iphone 9.0', '500', 5, '3', '5']
['12121212', 'Samsung Laptop', '900', 5, '3', '5']
而不是(我想要的)是: [' 12345670',' Iphone 9.0',' 500', 2 ,' 3',&# 39; 5'] [' 12121212',' Samsung Laptop',' 900', 1 ,' 3',&#39 ; 5']
答案 0 :(得分:1)
每个子列表的索引0 的GTIN
代码应该是您的字典键:
for sub_list in newdetails:
sub_list[3] = dictionary.get(sub_list[0], sub_list[3])
# ^
如果字典中的代码是整数而不是字符串,那么您需要将它们转换为int
:
for sub_list in newdetails:
sub_list[3] = dictionary.get(int(sub_list[0]), sub_list[3])
# ^