Python - 在字典中查找顶部项目

标签 python dictionary

我想在下面的逐项数据结构中检索 top track:

tracks = {
u'Harry Patch (In Memory Of)': {u'playlist1': 4.0}, 
u'Fake Plastic Trees': {u'playlist2': 5.0, u'playlist1': 6.0}, 
u'The Man Who Sold The World': {u'playlist1': 3.0}, 
u'Running Up That Hill': {u'playlist1': 2.0}, 
u"Jeep's Blues": {u'playlist3': 1.0, u'playlist4':9.0}, 
u'Stella By Starlight': {u'playlist3': 1.0}, 
u'Codex': {u'playlist1': 3.0}
}

逻辑如下:

1 - 查找属于多个播放列表的轨道。

2 - 在这些结果中,找到该轨道的最高排名。 (添加个人播放列表排名)

我部分地看到了这个片段:

tracks = [i[0] for i in radio.items()]
playlists = [i[1] for i in radio.items()]

ranking = []

for p in playlists:
    name = p.keys()
    rank = p.values()
    if len(rank) >= 2:  
        ranks = sum(r for r in rank)
        ranking.append(ranks)

print max(ranking)

打印:11.0,对应于所需的输出 u'Fake Plastic Trees

但是我忘记了轨道名称的轨道(请原谅我的双关语)。

如何使用上面的代码检索轨道名称?

附言。有没有更简单的方法来实现我想要的结果?

最佳答案

默认情况下,在使用 for 循环时,您只会迭代字典的值。您也可以使用 iteritems() 获取 key :

tracks = [i[0] for i in radio.items()]
playlists = [i[1] for i in radio.items()]

ranking = []
songs = []

for song, p in playlists.iteritems():
    name = p.keys()
    rank = p.values()
    if len(rank) >= 2:  
        ranks = sum(r for r in rank)
        ranking.append(ranks)
        songs.append(song)

import numpy as np
song_index = np.argmax(ranking)
print songs[song_index]

关于Python - 在字典中查找顶部项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40878052/

相关文章:

python - 为什么从 python 子进程写入继承的文件句柄会导致并非所有行都被写入?

python - 在 Tensorflow 中,如何将一个张量添加到另一个具有不同形状的张量?

python - 通过从用户输入中获取键来从 python 字典中查找值

dictionary - Python:获取字典中与key关联的所有值,其中的值可能是一个列表,也可能是单个项

python - 将 Tensorflow 输入管道与 skflow/tf learn 结合使用

python - 如何在 pandas 数据框中执行不同值的累积和

python - Django 总共只允许一个用户 session

c++ - 将 JSON 对象存储到 C++ 映射

c# - 锯齿状字典中的设置值设置所有值

javascript - 有没有一种简单的方法来获取 javascript 对象中所有键的属性?