我有一个关于Frozensets键和值的字典:
{(frozenset(['Age = 70', 'SMOK = y', 'LAD = 75']), frozenset(['CHOL = 220'])): 1.0, (frozenset(['AL = 0.0', 'DIAB = y', 'LAD = 75']), frozenset(['LM = 30'])): 1.0}
如何将其转换为像这样的普通词典?
{('(Age = 70, LAD = 40)', '(LM = 15)'): '1.0', ('(SEX = F, AL = 0.2, RCA = 85)', '(LM = 15)'): '1.0'}
答案 0 :(得分:0)
如果您只想将冻结集转换为元组,则可以尝试以下操作:
d1 = {(frozenset(['Age = 70', 'SMOK = y', 'LAD = 75']), frozenset(['CHOL = 220'])): 1.0, (frozenset(['AL = 0.0', 'DIAB = y', 'LAD = 75']), frozenset(['LM = 30'])): 1.0}
d2 = {tuple(map(tuple, k)): v for k, v in d1.items()}
输出
{(('SMOK = y', 'LAD = 75', 'Age = 70'), ('CHOL = 220',)): 1.0, (('DIAB = y', 'AL = 0.0', 'LAD = 75'), ('LM = 30',)): 1.0}
如果您希望格式与示例输出完全相同,则可以尝试以下操作:
d3 = {tuple(map(lambda x: f'({x})', map(', '.join, map(tuple, k)))): str(v) for k, v in d1.items()}
输出:(与您的输出格式完全一样)
{('(SMOK = y, LAD = 75, Age = 70)', '(CHOL = 220)'): '1.0', ('(DIAB = y, AL = 0.0, LAD = 75)', '(LM = 30)'): '1.0'}
但是正如其他人所说的那样,输入和输出格式是如此复杂,也许您应该首先满足您的要求。