Python 如果项位于不同的列表中,则将项添加到词典列表中

Python 如果项位于不同的列表中,则将项添加到词典列表中,python,list,dictionary,append,Python,List,Dictionary,Append,对于我来说,没有一个好的解释方法,但我可以尽我最大的努力帮助想象我正在尝试做什么 我有一份清单: post1_标签=['Tag1','Tag2'] 我也有类似的清单 post2_标签=['Tag1'] 基本上,如果第一个列表具有标记,则将其添加到列表字典中,并将标记名作为键。 由于post1_标记具有标记'Tag1'和'Tag2',因此应将其添加到字典中,如下所示: tags={'Tag1':[post1_标记],'Tag2':[post1_标记]} 但如果只是post2_标签,那么它应该

对于我来说,没有一个好的解释方法,但我可以尽我最大的努力帮助想象我正在尝试做什么

我有一份清单:

post1_标签=['Tag1','Tag2']
我也有类似的清单

post2_标签=['Tag1']
基本上,如果第一个列表具有标记,则将其添加到列表字典中,并将标记名作为键。 由于post1_标记具有标记
'Tag1'
'Tag2'
,因此应将其添加到字典中,如下所示:

tags={'Tag1':[post1_标记],'Tag2':[post1_标记]}
但如果只是
post2_标签
,那么它应该是:

tags={'Tag1':[post2_tags]}
我希望能够将列表放在一个字典中,它们的键是标签,如果它们有标签,就添加它

我希望最终结果如下所示:

tags={'Tag1':[post1_标记,post2_标记],'Tag2':[post1_标记]}

我希望这是有道理的。如果没有,请告诉我,以便我可以澄清。

我不清楚您是否希望在dicts中列出列表的内容或名称,但这里有一个解决方案:

post1_标签=['Tag1','Tag2']
post2_标记=['Tag1']
tags=dict()
#把字典从第一个列表中删掉
对于post1_标记中的标记:
标签[tag]=“post1_标签”]
对于post2_标记中的标记:
if tags in tags.keys():#检查标记是否已在dict中
标记[tag]。追加(“post2_标记”)
否则:#将剩余部分添加到dict中
标签[tag]=[“post2_标签”]
打印(标签)
如果需要列表名称的内容,只需删除列表名称周围的

如果不需要列表的变量名,也可以迭代列表列表(如第二个for循环,但被包装到另一个for循环中)。

尝试以下方法:

list1 = ["Tag1", "Tag2"]
list2 = ["Tag1"]
lists = {"list1": list1 , "list2": list2}
dictionary = {}
for key, value in lists.items():
    for tag in value:
        try:
            if dictionary[tag]:
               dictionary[tag] += f" {key}"
        except KeyError:
            dictionary[tag] = key
        
print(dictionary)

这可能是最短的方法:

tags={}
对于post1\u标记+post2\u标记中的i:
标记[i]=[n表示过滤器中的n,v(lambda t:isinstance(t[1],list)和t[0]。如果i在v中,则开始使用('post'),局部变量().items())
打印(标签)
我觉得大部分代码都是第4行的旁白。第7行做的是首先得到每个变量的列表,其中包含特定的标记,并以
'post'
开头


这段代码唯一的缺点是使用了
local
变量。
local
global
变量可能会弄乱代码。如果你的代码很短,那么这是完美的。但是,如果你的代码很长,那么我建议将代码放入一个函数中以保持干净。

我认为没有解决方案基本python库中已经实现了这方面的解决方案。您是否已经尝试过自己实现这一问题的解决方案?如果是,您的方法是什么?您正在努力解决什么?谢谢!这也正是我想要的方式!:)