Python 将元组列表(不同长度)转换为字典

Python 将元组列表(不同长度)转换为字典,python,list,dictionary,tuples,Python,List,Dictionary,Tuples,我是python新手,不知道如何将这个列表组转换成字典组,这样每个元组字符串都被指定为组中的键 groups = [("starch"), ("nuts", "vegetable"), ("fruits"), ("meat"), ("fruits"), ("starch")] groups_dic = {} 这就是我希望通过消除重复字符串得到的结果:- &

我是python新手,不知道如何将这个列表组转换成字典组,这样每个元组字符串都被指定为组中的键

groups = [("starch"), ("nuts", "vegetable"), ("fruits"), ("meat"), ("fruits"), ("starch")]
groups_dic = {}
这就是我希望通过消除重复字符串得到的结果:-

>>> print(groups_dic)

{"starch" : None,
"nuts" : None,
"vegetable" : None,
"fruits" : None,
"meat" : None}

如果我正确理解了您的问题,那么这是一种非常简单的方法,可以在给定字符串列表和/或字符串元组的情况下为字典收集唯一键

groups = [("starch"), ("nuts", "vegetable"), ("fruits"), ("meat"), ("fruits"), ("starch")]
groups_dic = {}


for group in groups:
  if type(group) != tuple:
    groups_dic[group] = None
  else:
    for element in group:
      groups_dic[element] = None


你将如何继续使用这本词典?你只是想收集独特的元素吗?如果是这样,您可以使用集合而不是字典。

假设您有这个元组列表

组=[ 淀粉 坚果、蔬菜、, 水果,, 肉 水果,, 淀粉 ] 您可以使用以下一行程序:

groups\u dic=dictstring,对于group in group中的group,对于group in group中的string,无 打印组 groups_dic={string:None for group in group for string in group} 打印组 您可以使用和

输出:

对于某些for循环和条件:

for grp in groups:
    if type(grp) == tuple:
        for i in grp:
            if i not in groups_dic:
                groups_dic[i] = None
    elif type(grp) == str:
        if grp not in groups_dic:
            groups_dic[grp.replace('(','').replace(')','')]=None
                       
print(groups_dic)

这不是一个元组列表。正如@superbrain所说,这不是一个元组列表。[typeo代表组中的o]给了我[,,]。单个值周围的括号不会使其成为元组。这是一个只有一个值的元组:“foo”,。注意后面的逗号。Thanx brother您的代码真的很有效。。thanx alot:。我只想在我的代码中提出这本词典的大小:Dno问题,若你们只想知道唯一键的数量,你们可以而且仍然应该使用一个集合。将dict换成set非常简单,我相信会更有效。此外,如果答案对您有效,我希望单击复选标记将其标记为最佳/选定答案;我不使用集合的原因是,字符串在集合中会变得无序,每次打印时我都会得到不同排列的字符串。我已经点击了复选标记。谢谢:谢谢兄弟的指导。我真的很感谢你的帮助。这个代码对我来说很好用
{'starch': None, 'nuts': None, 'vegetable': None, 'fruits': None, 'meat': None}
for grp in groups:
    if type(grp) == tuple:
        for i in grp:
            if i not in groups_dic:
                groups_dic[i] = None
    elif type(grp) == str:
        if grp not in groups_dic:
            groups_dic[grp.replace('(','').replace(')','')]=None
                       
print(groups_dic)