繁体   English   中英

以完全相同的顺序向两个列表添加值

[英]Adding values to two lists in the exact same order

因此,在进行了一些网络抓取并将数据框转换为列表之后,我想将一个列表与我自己创建的另一个列表进行比较。 但是,如果一个列表没有来自另一个列表的值,我希望它按照我要与之比较的列表的确切顺序添加。

例如,如果我将一份零食清单与另一份零食清单进行比较

我想确保 List2 最终看起来与 List1 完全一样。 我想做的另一件事是将苹果的价格添加到 ListPrices 到“Nan”,因为我没有现有值,我希望它在一个 for/if 语句中完成。

List1 = ['apples', 'bananas', 'cookies', 'soda']
List2 = ['apples', 'cookies', 'soda']
ListPrices =  [1, 3, 1]

for i in range(List1):
    if List1[i] != List2[i]:
        List2.insert([i-1], List1[i])
        ListPrices.insert([i-1], Nan)
print(List2)

上面是 python 脚本,但我似乎对如何在不产生错误的情况下做到这一点陷入了死胡同。 我希望得到的输出看起来完全像这样。

List2 = ['apples', 'bananas', 'cookies', 'soda']
ListPrices =  [1, Nan, 3, 1]

任何建议都非常感谢。

您可以将其转换为字典以进行简单查找

d = dict(zip(List2,ListPrices))

[d.get(i,None) for i in List1]

假设ListPrices中的价格是一致的,即如果List1有两个香蕉,两者的价格相同,您可以通过zip List1ListPrices来创建一个dict ,然后在该字典中查找List2中项目的价格,或者使用nan作为默认设置。

prices = dict(zip(List2, ListPrices))
# {'apples': 1, 'cookies': 3, 'soda': 1}

List2 = List1 # make same as List1...
ListPrices = [prices.get(x, float("nan")) for x in List1]
# [1, nan, 3, 1]

所以如果我理解正确的话, ListPricesList2的价格List2

List1 = ['apples', 'bananas', 'cookies', 'soda']
List2 = ['apples', 'cookies', 'soda']
ListPrices =  [1, 3, 1]

如果是这样,您可以确保使用字典将价格绑定到List2每个项目:

MapPrices = dict(zip(List2, ListPrices))

然后使用该地图获取List1的价格:

>>> [MapPrices.get(item, float('NaN')) for item in List1]
[1, nan, 3, 1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM