gpt4 book ai didi

python - 如何匹配两个字典索引而不考虑顺序

转载 作者:行者123 更新时间:2023-12-01 00:36:12 25 4
gpt4 key购买 nike

我正在尝试比较两个字典索引并返回匹配的索引列表,无论顺序如何。我也尝试在不加载任何包/库的情况下执行此操作。

(如果这是 SQL,它将是两个表的 INNER JOIN。)

我尝试这样做:Finding matching keys in two large dictionaries and doing it fast

但这只会返回字典索引匹配的确切位置。

我也尝试过这个: https://learning.oreilly.com/library/view/python-cookbook/0596001673/ch01s09.html

“问题:给定两个字典,您需要找到两个字典中都存在的键集。” (这正是我想做的)。

#Attempt 1 (using 1st source from Stack Overflow):

dict1 = {'x': [8, 8, 1, 8, 2, 1], 'v': [0.98, 0.24, 0.91, 0.03, 0.04, 0.75]}
dict2 = {'x': [0, 8, 8, 1, 3, 3], 'v': [0.98, 0.78, 0.66, 0.08, 0.42, 0.21, 0.04]}

def common_indx(dict1,dict2):
dict1Set = set(dict1['x'])
dict2Set = set(dict2['x'])

for name in dict1Set.intersection(dict2Set):
return(name)

common_indx(dict1,dict2)

Out: 8
#Attempt 2 (Using Python Cookbook):

intersect = []
for item in some_dict.keys( ):
if another_dict.has_key(item):
intersect.append(item)
print "Intersects:", intersect

这不起作用,因为它是在 python 2 中,但这本书准确地回答了我需要做的事情。

我的预期结果是[1,8],这只是两个字典中匹配的索引,无论位置如何。

最佳答案

您的错误是您立即返回名字:

for name in dict1Set.intersection(dict2Set):
return(name)

您希望将交集转换为列表:

return list(dict1Set.intersection(dict2Set))

或者只返回集合本身,而不转换为列表。您还可以在两个集合上使用 & 运算符:

return list(set(dict1['x']) & set(dict2['x']))

Python 说明书代码与相交,而您自己的代码与单个键的值相交。这是不同的东西。

否则它不起作用,因为 dictionary.has_key() 方法在 Python 3 中已被删除,但您可以使用 key indictionary 代替。您还可以与 dictionary view objects for the keys 相交:

shared_keys = dict1.keys() & dict2.keys()  # The intersection of the keys

关于python - 如何匹配两个字典索引而不考虑顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748197/

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