我在python中有一个哈希表,我有很多数据,有些是相同的,但我需要链接它们。
我想建立一个音乐数据库,如果我搜索一些名为HZ的数值,我就可以找到这首歌的名字。
所以,让我说我有一首歌叫做歌曲1我测量它的HZ值,但它们是无数的10具体。
我想要的是能够搜索任何HZ值并获得相同的结果。
Song 1
10 HZ
20 HZ
30 HZ
40 HZ
50 HZ
60 HZ
70 HZ
80 HZ
90 HZ
100 HZ
因此,如果我输入这10个值中的任何一个,我将得到名称Song 1作为结果
答案 0 :(得分:0)
只需使用内置字典。它比你在大多数用例中编写代码的效率要高得多。
听起来你想要的只是将歌曲名称存储为每个赫兹值的值。如果你有多首共享赫兹的歌曲,你可以使用一个存储集合的dict(或者只是一个默认的dict)。
答案 1 :(得分:0)
music = {10: [<Song 1>, <Song 3>],
20: [<Song 1>, <Song 2>]
}
现在要查看所有拥有10HZ的歌曲,只需使用:
music[10]
答案 2 :(得分:0)
在您的词典(“哈希表”)中输入所有HZ值作为相同'Song 1'
的键。很可能一首以上的歌曲与其他歌曲具有相同的HZ值。在这种情况下,您希望将不同的歌曲保持在相同的HZ中,因此您的词典的值是歌曲集而不是单个歌曲集。实现这一目标的最简单方法是:
from collections import defaultdict
musicDirectory= defaultdict(set)
musicDirectory[ 10].add( 'Song 1' )
musicDirectory[ 40].add( 'Song 1' )
musicDirectory[ 70].add( 'Song 1' )
musicDirectory[100].add( 'Song 1' )
musicDirectory[ 10].add( 'Song 2' )
musicDirectory[ 70].add( 'Song 2' )
musicDirectory[ 50].add( 'Song 2' )
musicDirectory[ 10].add( 'Song 3' )
musicDirectory[ 50].add( 'Song 3' )
musicDirectory[ 70].add( 'Song 3' )
print(40,"HZ=",musicDirectory[10])
print(70,"HZ=",musicDirectory[10])
应打印:
40 HZ= {'Song 1'}
70 HZ= {'Song 2', 'Song 3', 'Song 1'}
因为只有一首HZ = 40的歌曲,但其中三首歌曲的HZ = 70。
答案 3 :(得分:0)
假设我有10首歌曲,每首歌曲都有频率,但只有5种可能的独特频率:
In [18]: import numpy as np
In [19]: from collections import defaultdict
In [20]: songs = [''.join(np.random.choice(list(letters), size=10).tolist()) for _ in range(10)]
In [21]: freqs = np.random.choice(range(10, 15), size=10).tolist()
In [22]: data = defaultdict(list)
In [23]: for freq, song in zip(freqs, songs):
....: data[freq].append(song)
....:
In [24]: dict(data)
Out[24]:
{10: ['qlogxhxscp', 'eqxaeiyujp', 'wnhyprymyq', 'snsqquyvmv'],
11: ['toibbjljxi', 'lqdxucnrpv', 'mrxxwmnxil'],
13: ['lxcpzbswxx'],
14: ['gmdbimcwon', 'zafhszrwss']}
或者,如果某首歌可以有多个频率,请使用set
代替list
。