首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在列表中检查字典中键的值?

在列表中检查字典中键的值?
EN

Stack Overflow用户
提问于 2016-03-08 01:44:32
回答 2查看 72关注 0票数 0

因此,我已经有一段时间没有使用Python了,而且我有点生疏了--我正在做一个个人项目,我使用的API返回了一个代表歌曲数据的字典列表。我想要做的实际上是将返回的歌曲列表缩减到只有5级的歌曲列表(并从列表中删除所有其他歌曲)。我下面有些代码似乎不起作用。它似乎并没有真正删除任何东西,而是打印出整个歌曲列表(在我的例子中,这个列表相当大,因为它大约有11,000首歌曲)。

作为一点帮助,我还将发布一个API返回的示例(一首歌):

代码语言:javascript
复制
{
   'comment':'',
   'rating':'0',
   'albumArtRef':[
     {
       'url': 'http://lh6.ggpht.com/...'
     }
   ],
   'artistId':[
     'Aod62yyj3u3xsjtooghh2glwsdi'
   ],
   'composer':'',
   'year':2011,
   'creationTimestamp':'1330879409467830',
   'id':'5924d75a-931c-30ed-8790-f7fce8943c85',
   'album':'Heritage ',
   'totalDiscCount':0,
   'title':'Haxprocess',
   'recentTimestamp':'1372040508935000',
   'albumArtist':'',
   'trackNumber':6,
   'discNumber':0,
   'deleted':False,
   'storeId':'Txsffypukmmeg3iwl3w5a5s3vzy',
   'nid':'Txsffypukmmeg3iwl3w5a5s3vzy',
   'totalTrackCount':10,
   'estimatedSize':'17229205',
   'albumId':'Bdkf6ywxmrhflvtasnayxlkgpcm',
   'beatsPerMinute':0,
   'genre':'Progressive Metal',
   'playCount':7,
   'artistArtRef':[
     {
       'url': 'http://lh3.ggpht.com/...'
     }
   ],
   'kind':'sj#track',
   'artist':'Opeth',
   'lastModifiedTimestamp':'1330881158830924',
   'clientId':'+eGFGTbiyMktbPuvB5MfsA',
   'durationMillis':'418000'
 }

我的代码如下:

代码语言:javascript
复制
library = api.get_all_songs()
    print("There are",len(library),"items in your music library")
    for track in library:
        if track['rating'] != 5:
            library.remove(track)
    print("You have",len(library),"favorite tracks!")
    return library

我添加了“最喜欢的歌曲”数量(以及库中的歌曲数量),以测试和查看我的循环和语句是否会删除任何内容,但是没有(因为循环前后的数字是相同的)--我认为这与此有关,因为代码工作正常,否则它就不会删除列表。

如果需要额外的代码,我将非常乐意提供它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-08 01:48:10

尝试一个列表理解来过滤你的字典列表:

代码语言:javascript
复制
library = ...

good_songs = [ x for x in library if x['rating'] == '5' ]
票数 3
EN

Stack Overflow用户

发布于 2016-03-08 01:50:42

API将评级处理为字符串。

您正在将评等视为整数。这就是为什么从来没有任何音轨被删除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35857456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档