如何使用 python 中的 'identitity' 标签将元素映射到自身?

How to map elements to themselves with an 'identitity' label in python?

现在我有:

label = {"A" : 1, "B" : 2}
x = np.zeros((150,4))
y = np.zeros(150)
i = 0

with open('data.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    print(next(reader, None))
    for row in reader:
        x[i,:] = row[1:5]
        y[i] = label[row[5]] #it's about this line
        i += 1

但如果该行包含 1、2 或 3,则会抛出错误,因为它们之间没有映射。

KeyError: '3'

如何在不专门将它们添加到标签中的情况下将它们映射到自身? 是否存在将所有元素映射到自身的标识标签之类的东西?

根据我对您问题的理解,如果您尝试访问 label[3] 而密钥不存在,您需要 label[3] = 3?

您可以构建一个自定义 defaultdict 工厂,将键值对插入到您的标签字典中……可能。见下方评论

https://docs.python.org/2/library/collections.html#collections.defaultdict.default_factory

或者如果密钥不存在,您可以return一个默认值

label.get(key, default_value)

最后,你可以做一个简单的 try/except 块

try: 
    y[i] = label[row[5]]
except:
    do something

您可以实现自己的字典 class:

class id_dict(dict):
    def __missing__(self, key):
        return key

labels = id_dict({"A" : 1, "B" : 2})

print(labels["A"])
print(labels[3])

输出将是

1
3