Python 使用最大值追加到列表字典

Python 使用最大值追加到列表字典,python,Python,我想比较多个长度相等的列表,以便在列表字典中添加一些单词。我已经比较了这些列表,以获得每个索引的最大数量 maxlist = [2,9,6,4,8] #This is the list of max number from the three different lists a_list = [2,1,4,2,8] b_list = [1,9,6,3,4] c_list = [0,3,2,4,1] 现在,我有另一个相同长度的单词列表: words = ["boy", &q

我想比较多个长度相等的列表,以便在列表字典中添加一些单词。我已经比较了这些列表,以获得每个索引的最大数量

maxlist = [2,9,6,4,8] #This is the list of max number from the three different lists

a_list = [2,1,4,2,8]
b_list = [1,9,6,3,4]
c_list = [0,3,2,4,1]
现在,我有另一个相同长度的单词列表:

words = ["boy", "girl", "git", "tall", "boss"]
这里我想做的是将每个列表与maxlist进行比较,如果在同一索引的三个列表中的任何一个列表中找到maxlist中的数字,我想创建一个列表字典,将单词附加到该特定列表中。因此,我的最终结果将是:

对于索引0,maxlist位于_列表中,因此我将有:

 {a_list: ["boy"]}
 {a_list: ["boy"], b_list: ["girl"]}
对于索引1,maxlist位于b_列表中,因此我将有:

 {a_list: ["boy"]}
 {a_list: ["boy"], b_list: ["girl"]}
将所有列表与maxlist进行比较后,我希望:

 {a_list: ["boy", "boss"], b_list:["girl","git"], c_list: ["tall"]}
我在这里使用了三个列表作为示例,但在我的例子中,我有40个列表。有什么有效的方法来实现这一点吗?我现在被卡住了。以下是我目前正在编写的代码:

 label_data = {}
 for i in range(len(maxlist)):
   if maxlist[i] > 1: #I don't want to consider a max of 1.
     if maxlist == a_list[i]:
        if a_list in label_data:
           label_data["a_list"].append(words[i])
        else:
           dates_dict["key"] = [words[i]]
不确定上面的代码是否可以正常工作,另外我必须为所有列表继续构造if函数。是否有任何有效的方法来解决这个问题,请张贴您的代码


谢谢

通常在比较列表中的相应元素时,这是非常有用的。“集合”模块中的A也有助于创建列表字典:

从集合导入defaultdict
label_data=defaultdict(列表)
单词=[“男孩”、“女孩”、“吉特”、“高个子”、“老板”]
a_列表=[2,1,4,2,8]
b_列表=[1,9,6,3,4]
c_列表=[0,3,2,4,1]
#迭代三个列表中相应的单词和条目
对于zip中的word、a、b、c(word、a_列表、b_列表、c_列表):
m=最大值(a、b、c)
#检查最大值并相应追加
如果m==a:
标签数据['a_列表]。附加(word)
elif m==b:
标签数据['b_列表]]。附加(word)
其他:
标签_数据['c_列表']。追加(word)
哪个输出

defaultdict(,{'a_list':['boy','boss'],'b_list':['girl','git'],'c_list':['tall']})

Eniola的另一个指导原则-当您想将变量名用作dict键时,您可能应该重构这些变量,使它们成为dict中的一个开始。@KennyOstrom是的,但我认为OP所使用的字典最能解决这个问题part@C.Nivs,如何从输出中排除?有什么想法吗?打印dict(或defaultdict)是另一个问题,您应该能够管理它。您可以在迭代dict时打印键和值。