gpt4 book ai didi

python - 如何有效地获取Python中两个列表中元素的平均值

转载 作者:行者123 更新时间:2023-12-01 07:05:17 26 4
gpt4 key购买 nike

我有两个列表如下。

mylist1 = [["lemon", 0.1], ["egg", 0.1], ["muffin", 0.3], ["chocolate", 0.5]]
mylist2 = [["chocolate", 0.5], ["milk", 0.2], ["carrot", 0.8], ["egg", 0.8]]

我想得到两个列表中共同元素的平均值,如下所示。
myoutput = [["chocolate", 0.5], ["egg", 0.45]]

我当前的代码如下
for item1 in mylist1:
for item2 in mylist2:
if item1[0] == item2[0]:
print(np.mean([item1[1], item2[1]]))

但是,由于有两个 for循环( O(n^2) 复杂度)这对于非常长的列表是非常低效的。我想知道在 Python 中是否有更标准/更有效的方法。

最佳答案

您可以通过将 1 转换为字典,然后在第二个列表中的每个项目访问该字典(在 O(1) 中),在 O(n) 中完成此操作(对每个列表进行单次传递),如下所示:

mylist1 = [["lemon", 0.1], ["egg", 0.1], ["muffin", 0.3], ["chocolate", 0.5]]
mylist2 = [["chocolate", 0.5], ["milk", 0.2], ["carrot", 0.8], ["egg", 0.8]]

l1_as_dict = dict(mylist1)

myoutput = []
for item,price2 in mylist2:
if item in l1_as_dict:
price1 = l1_as_dict[item]
myoutput.append([item, (price1+price2)/2])

print(myoutput)

输出:
[['chocolate', 0.5], ['egg', 0.45]]

关于python - 如何有效地获取Python中两个列表中元素的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61712660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com