我正在尝试制作一个字典,为不同的键返回相同的值,目前我有这样的字典:
GScale = {
('S1') : 'gN',
('S2') : 'aN',
('S3') : 'bN',
('N1','G1','A2','B2') : 'gG',
('N2','G2','A1','B3','C2') : 'aA',
('N3','G3','A3','B1','C3','D2') : 'bB',
('N4','A4','B4','C1','D3','E2') : 'cC',
('N5','B5','C4','D1','E3','F2') : 'dD',
('N6','C5','D4','E1','F3') : 'eE',
('N7','D5','E4','F1') : 'fF'
}
当我要求
GScale['S1']
时,我成功得到'gN',但是当我要求GScale['N1']
时,我得到了一个关键错误,可能是什么问题? 最佳答案
您的字典有2种键:
像("S1")
这样的字符串(括号在这里不构成元组,可能是造成混乱的原因)
像("N1",...)
这样的元组
因此仅使用N1
来查询字典是行不通的,因为N1
不是键,它是某些键元组的一部分。
为了方便起见,如果您想这样编写代码,建议您以后在字典理解中重新编写它:
GScale = {
('S1',) : 'gN', # trailing comma is needed now
('S2',) : 'aN',
('S3',) : 'bN',
('N1','G1','A2','B2') : 'gG',
('N2','G2','A1','B3','C2') : 'aA',
('N3','G3','A3','B1','C3','D2') : 'bB',
('N4','A4','B4','C1','D3','E2') : 'cC',
('N5','B5','C4','D1','E3','F2') : 'dD',
('N6','C5','D4','E1','F3') : 'eE',
('N7','D5','E4','F1') : 'fF'
}
GScale = {k:v for kl,v in GScale.items() for k in kl}
现在
GScale
是:{'N1':'gG','B5':'dD','D4':'eE','C3':'bB','A3':'bB','S3':'bN',' F3':'eE','C4':'dD','E3':'dD','D1':'dD','A4':'cC','E2':'cC','G2' :'aA','C5':'eE','A2':'gG','N2':'aA','E4':'fF','E1':'eE','D5':' fF”,“ N6”:“ eE”,“ N7”:“ fF”,“ B1”:“ bB”,“ A1”:“ aA”,“ C1”:“ cC”,“ F2”:“ dD” ,'B3':'aA','G3':'bB','F1':'fF','D3':'cC','B2':'gG','B4':'cC',' G1':'gG','S1':'gN','C2':'aA','N5':'dD','S2':'aN','N3':'bB','D2' :'bB','N4':'cC'}
现在,键/值对被扩展并查询任何
N1
或字母+数字作品。(请注意,单值键添加了逗号以使其成为1个元素的元组,因此在字典理解中对键元组进行的迭代工作(不添加逗号将使其看起来有效,但它将创建带有单个字母的键)
S1
,S2
...:不是您想要的)关于python - 在字典中使用多个键到相同值的键错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47253892/