gpt4 book ai didi

python - 帮助在元组匹配 Python 函数中使用 *args

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:51 25 4
gpt4 key购买 nike

我正在尝试在 python 中构建一个函数,如果来自 dict1 的特定值,它会生成两个字典的值。匹配特定值 dict2 。我的函数如下所示:

def dict_matcher(dict1, dict2, item1_pos, item2_pos):
"""Uses a tuple value from dict1 to search for a matching tuple value in dict2. If a match is found, the other values from dict1 and dict2 are returned."""
for item1 in dict1:
for item2 in dict2:
if dict1[item1][item1_pos] == dict2[item2][item2_pos]:
yield(dict1[item1][2], dict2[item2][6])

我正在使用dict_matcher像这样:

matches = [myresults for myresults in dict_matcher(dict1, dict2 , 2, 6)]
print(matches)

当我打印matches时我得到了正确匹配的 dict1 和 dict2 值的列表,如下所示:

[('frog', 'frog'), ('spider', 'spider'), ('cricket', 'cricket'), ('hampster', 'hampster')]

如何向此函数添加变量参数,以便除了打印每个字典中的匹配值之外,还可以在 dict1[item1][2] and dict2[item2][6] 的实例中打印每个字典项的其他值匹配?我可以使用 *args 吗?感谢您的帮助。

编辑:好吧,对于我想要做什么似乎有些困惑,所以让我尝试另一个例子。

dict1 = {1: ('frog', 'green'), 2: ('spider', 'blue'), 3: ('cricket', 'red')}

dict2 = {a: ('frog', 12.34), b: ('ape', 22.33), c: ('lemur', 90.21)}

dict_matcher(dict1, dict2, 0, 0)将从 dict1 中找到 value[0] ,从 dict2 中找到 value[0] 的匹配值。在这种情况下,唯一的匹配是“frog”。我上面的函数就是这样做的。我想做的是扩展该函数,以便能够从字典项中打印其他值,其中 dict1[value][0] == dict2[value][0]我希望在函数参数中指定它。

最佳答案

您可以使用slice objects :

def dict_matcher(dict1, dict2, pos1, pos2, slicer1=(), slicer2=()):
slice1 = slice(*slicer1) if slicer1 else slice(len(dict1))
slice2 = slice(*slicer2) if slicer2 else slice(len(dict2))
for data1 in dict1.values():
for data2 in dict2.values():
if data1[pos1] == data2[pos2]:
yield data1[slice1], data2[slice2]

for result1, result2 in dict_matcher(my_dict, your_dict, 2, 6, (3, 8, 2), (2, 6)):
print result1, result2
  • some_list[slice(3, 8, 2)] 相当于 some_list[3:8:2],为您提供从以下开始的 some_list 的每个第二个元素第四个元素(索引为 3)到第八个元素。
  • some_list[slice(2, 6)] 相当于 some_list[2:6],给出从第三个元素开始的 some_list 的每个元素(索引为 2)直到第六个元素。
  • some_list[slice(7)] 相当于 some_list[:7],给你some_list 的每个元素,直到第七个元素。

如果省略 slicer1/2 参数,该函数会假设您需要整个列表,并相应地设置切片。

此外,我删除了不必要的字典查找。

关于python - 帮助在元组匹配 Python 函数中使用 *args,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019709/

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