我的程序应在通道中注册元素的位置。每个元素都有一个不同的GroupClass
(例如Class1
,Class2
,Class3
)。
例如,以下代码应将A1
,B1
和C1
的位置分别指定为6、3和4:
GroupClass = {'Class1': 'A1', 'Class2': 'B1', 'Class3': 'C1'}
channels = ['E1', 'g', 'A2', 'B1', 'C1', 'A3', 'A1']
labels = []
picks = []
for ch in GroupClass:
if not GroupClass[ch]: continue
ch_pick = GroupClass[ch] # Investigate this filename, channels))
picks.append(channels.index(ch_pick.upper()))
labels.append(ch)
print(picks)
print(labels)
但是,当在字典中分配了多个元素时,代码将失败。 例如,以下内容将给出错误:
GroupClass = {'Class1': ('A1', 'A2'), 'Class2': 'B1', 'Class3': 'C1'}
通过如上所述更改GroupClass,应生成var picks和标签
啄 = 6,2,3,4 标签 = {'Class1':'A1','Class2':'B1','Class3':'C1'}
我要去哪里错了?
答案 0 :(得分:2)
这是因为,当您执行(channels.index(ch_pick.upper()))
时,期望ch_pick
是一个字符串。在这种情况下,它是tuple
。
并且错误消息提示 AttributeError: 'tuple' object has no attribute 'upper'
。
您可以执行以下操作来选择数据类型为tuple
的元素(第一/第二等):
if type(ch_pick) is tuple:
// pick an element then append
else:
picks.append(channels.index(ch_pick.upper()))
答案 1 :(得分:1)
我建议您检查对象的类并在列表中使用多个条目:
GroupClass = {'Class1': ('A1','A2'), 'Class2': 'B1', 'Class3': 'C1'}
channels= ['E1', 'g', 'A2', 'B1', 'C1', 'A3', 'A1']
labels=[]
picks = []
for ch in GroupClass:
if not GroupClass[ch]: continue
ch_pick = GroupClass[ch] # Investigate this
if isinstance(ch_pick, tuple):
for i in ch_pick:
picks.append(channels.index(i.upper()))
else:
picks.append(channels.index(ch_pick.upper()))
labels.append(ch)
print(picks)
print(labels)
礼物:
[6, 2, 3, 4]
['Class1', 'Class2', 'Class3']
答案 2 :(得分:1)
错误很明显:
“元组”对象没有属性“地图”
我的回答:
for ch in GroupClass:
if not GroupClass[ch]: continue
ch_pick = GroupClass[ch] # Investigate this filename, channels))
if isinstance(ch_pick, tuple):picks.append([channels.index(x.upper()) for x in ch_pick])
else : picks.append(channels.index(ch_pick.upper()))
labels.append(ch)