我有一个如下数组:
[( 1, b'"C"'), ( 2, b'"C#"'), ( 3, b'"D"'), ( 4, b'"D#"'),
( 5, b'"E"'), ( 6, b'"F"'), ( 7, b'"F#"'), ( 8, b'"G"'),
( 9, b'"G#"'), (10, b'"A"'), (11, b'"A#"'), (12, b'"B"'))]
我想把它转换成字典“d”,这样当我说的时候
d[11]
我会得到"A#"
。
答案 0 :(得分:2)
你好像要求一个dict,其值是一个Unicode字符串。如果是这种情况,那么您需要对其进行解码并删除额外的引号。这样做虽然我的解释器默认使用单引号而不是双引号来回显字符串。
mydict = {k: v.decode().replace('"', "") for k, v in list1}
结果是:
{1: 'C', 2: 'C#', 3: 'D', 4: 'D#', 5: 'E', 6: 'F', 7: 'F#', 8: 'G', 9: 'G#', 10: 'A', 11: 'A#', 12: 'B'}
使用dict理解来循环遍历列表,解码从byte转换为unicode。如果您希望保留内部引号,可以删除替换。
你不想打电话给dict,dict所以我已经使用了mydict。
答案 1 :(得分:1)
试试这个
numpy_arr = [( 1, b'"C"'), ( 2, b'"C#"'), ( 3, b'"D"'), ( 4, b'"D#"'),
( 5, b'"E"'), ( 6, b'"F"'), ( 7, b'"F#"'), ( 8, b'"G"'),
( 9, b'"G#"'), (10, b'"A"'), (11, b'"A#"'), (12, b'"B"')
]
dictonry = dict(numpy_arr)
print(dictonry)
print(dictonry[11])
答案 2 :(得分:1)
list1 = [( 1, b'"C"'), ( 2, b'"C#"'), ( 3, b'"D"'), ( 4, b'"D#"'),
( 5, b'"E"'), ( 6, b'"F"'), ( 7, b'"F#"'), ( 8, b'"G"'),
( 9, b'"G#"'), (10, b'"A"'), (11, b'"A#"'), (12, b'"B"')]
dict1 = {a : b for a,b in list1}
print(dict1)
{1: '"C"', 2: '"C#"', 3: '"D"', 4: '"D#"', 5: '"E"', 6: '"F"', 7: '"F#"', 8: '"G"', 9: '"G#"', 10: '"A"', 11: '"A#"', 12: '"B"'}
答案 3 :(得分:0)
一般方法:
> A = np.random.randint(0,10,(3,3))
([[5, 0, 8],[3, 0, 5],[0, 4, 4]])
> B = dict(zip(A[:,0],A[:,1:]))
{5: 数组([0, 8]), 3: 数组([0, 5]), 0: 数组([4, 4])}
以第一列为键