Python 如何更改字典的键值?
我得到一个大文本文件()并将该文件放入字典:Python 如何更改字典的键值?,python,numpy,Python,Numpy,我得到一个大文本文件()并将该文件放入字典: word2vec = "./vectors.txt" with open(word2vec, 'r') as f: file = csv.reader(f, delimiter=' ') model = {k: np.array(list(map(float, v))) for k, *v in file} 所以我得到了这本字典:{Word:embedded vectors} 现在我想将我的密钥从:b'Word'转换为:Word(
word2vec = "./vectors.txt"
with open(word2vec, 'r') as f:
file = csv.reader(f, delimiter=' ')
model = {k: np.array(list(map(float, v))) for k, *v in file}
所以我得到了这本字典:{Word:embedded vectors}
现在我想将我的密钥从:b'Word'
转换为:Word
(因此我得到了例如UNK
而不是b'UNK'
)
有人知道我如何删除每个实例的b'.'
?
或者,在将文本文件放入词典之前,先删除文本文件中的所有
b'…'
,会更容易些吗?为什么不干脆str.decode()
呢
电话线是
model = {k.decode(): np.array(list(map(float, v))) for k, *v in file}
换钥匙是不可能的。您将需要添加一个具有修改值的新密钥,然后删除旧密钥,或者创建一个具有dict理解等功能的新dict 现在我想将我的密钥从:
b'Word'
转换为:Word
(因此我得到了例如UNK
而不是b'UNK'
)
您得到的键是字符串,如“b'Word'”
和“b'UNK'”
,非b'Word'
和b'UNK'
。尝试执行print(b“Word”、type(b“Word”)、“b“Word”、type(“b“Word”)))
,这可能会让事情更清楚
这应该起作用:
导入ast
导入csv
将numpy作为np导入
打开(“../out/out\u file.txt”)作为文件\u-in:
reader=csv.reader(文件_in,分隔符=)
words={ast.literal_eval(word.decode():对于word,*vect in reader}
这个解决方案似乎也要快得多。Python3默认情况下通常会这样做。输出将是字节,我假设您正在查找str。请尝试使用json.dumps()将字典转储到json中。您查看了吗?为什么不从第一个位置创建正确的键呢?我使用的是Python 3.7
model={eval(k).decode():np.array(list(map(float,v)),用于k,*v in file}
Maxl:很高兴听到这个消息-不客气,但是我建议您使用ast.literal\u eval(k)
而不是eval(k)
,因为后者存在安全风险。