gpt4 book ai didi

python - 如何使用 list *args 为字典创建函数?

转载 作者:行者123 更新时间:2023-12-04 07:46:33 24 4
gpt4 key购买 nike

嗨,我正在尝试编写一个函数,该函数接受可变数量的列表,这些列表可以包含任意数量的单词。我希望返回的是一个字典,其中单词是键,值是所有列表中每个单词的总数。
我的代码适用于单个列表:

wl1 = ['double', 'triple', 'int', 'quadruple']
new_dict = {}
for i in range(len(wl1)):
new_dict[wl1[i]] = wl1.count(wl1[i])
并返回:
{'double': 1, 'triple': 1, 'int': 1, 'quadruple': 1}
但它不适用于多个列表并显示不可散列的列表类型:
def varlist(*items):
newdict = {}
for i in range(len(items)):
newdict[items[i]] = items.count(items[i])
return (newdict)
我应该使用 **kwargs 来将其编入字典吗?如果是这样,我会使用它们的频率计数将变量列表项更改为字典吗?任何提示都会非常有帮助。

最佳答案

根据您拥有的代码,问题位于这一行:

             newdict[items[i]] = items.count(items[I])
我测试了这个函数并传递了几个列表 (['foo', 'bar'], ['foo','bad']),问题是 items 变量现在包含一个 列表列表 : [['foo', 'bar'], ['foo','bad']]所以,当你做第一个 for并尝试放入 newdict你正在做这样的事情: newdict[['foo','bar']] = ....因为你不能使用列表作为字典的键,所以你得到了“不可散列的列表类型”
您可以做的是将所有列表合并到一个主列表中: master_list = [word for sublist in items for word in sublist]这是修改后的版本:
def varlist(*items):
newdict = {}
master_list = [word for sublist in items for word in sublist]
for i in range(len(master_list)):
newdict[master_list[i]] = master_list.count(master_list[i])
return newdict

关于python - 如何使用 list *args 为字典创建函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67171524/

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