Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改字典的键值?_Python_Numpy - Fatal编程技术网

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)
,因为后者存在安全风险。