如何解决将不同长度的元组列表转换成字典
我是python的新手,无法弄清楚如何将列表“ groups”转换为字典“ groups_dic”,这样,将每个元组字符串都分配为“ group_dic”中的键
groups = [("starch"),("nuts","vegetable"),("fruits"),("meat"),("starch")]
groups_dic = {}
这是我想要的消除重复字符串的结果:-
>>> print(groups_dic)
{"starch" : None,"nuts" : None,"vegetable" : None,"fruits" : None,"meat" : None}
解决方法
如果我正确理解了您的问题,这是一种非常简单的方法,基本上可以为给定字符串列表和/或字符串元组的字典收集唯一键
groups = [("starch"),("nuts","vegetable"),("fruits"),("meat"),("starch")]
groups_dic = {}
for group in groups:
if type(group) != tuple:
groups_dic[group] = None
else:
for element in group:
groups_dic[element] = None
您将如何使用字典?您只是在尝试收集独特的元素吗?如果是这样,您可以使用集合而不是字典。
,您可以使用itertools.chain和dict.fromkeys
from itertools import chain
groups = [("starch",),("fruits",("meat",("starch",)]
res = dict.fromkeys(chain.from_iterable(groups))
print(res)
输出:
{'starch': None,'nuts': None,'vegetable': None,'fruits': None,'meat': None}
,
假设您具有此元组列表
groups = [
("starch",]
您可以使用以下一线:
groups_dic = dict((string,None) for group in groups for string in group)
print(groups_dic)
groups_dic = {string:None for group in groups for string in group}
print(groups_dic)
,
有一些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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。