2014-12-13 76 views
0

键值我有数据,看起来像这样:认沽词典到新的列表基于在Python

[{'album': 'Lonerism', 
    'song': 'Led Zeppelin (Bonus Track)', 
    'datetime': '2014-12-10 08:03:00', 
    'artist': 'Tame Impala'}, 
{'album': 'Lonerism', 
    'song': 'Feels Like We Only Go Backwards', 
    'datetime': '2014-12-10 08:00:00', 
    'artist': 'Tame Impala'}, 
{'album': 'The Suburbs', 
    'song': 'Empty Room', 
    'datetime': '2014-12-10 07:57:00', 
    'artist': 'Arcade Fire'}]   

如果为“艺术家”键== X的值,我希望把整个字典到一个新的列表到目前为止,我的代码只返回一个空白列表。

def Pick_Artist(self, pickartist): 
    entries = self.data_to_dict() 

    info = [] 

    for d in entries: 
     arts = d['artist'].lower 
     if arts == pickartist: 
      info.append(d) 
     return info 

任何帮助将不胜感激!

+0

这是什么呢? 'self.data_to_dict()' – 2014-12-13 18:20:13

+0

它返回的数据格式如上面的东西:[{'album':'Lonerism','song':'Led Zeppelin(Bonus Track)','datetime':'2014-12-10 08:03:00','artist':'Tame Impala'}] – 2014-12-13 18:21:47

回答

4

您存储方法参考

arts = d['artist'].lower 

,因为你没有呼叫的方法,你只能获得方法对象本身。这绝不会等于pickartist中的字符串。

添加()

arts = d['artist'].lower() 

演示:

>>> d = {'album': 'Lonerism', 'song': 'Led Zeppelin (Bonus Track)', 'datetime': '2014-12-10 08:03:00', 'artist': 'Tame Impala'} 
>>> d['artist'].lower 
<built-in method lower of str object at 0x106506e70> 
>>> d['artist'].lower == 'tame impala' 
False 
>>> d['artist'].lower() 
'tame impala' 
>>> d['artist'].lower() == 'tame impala' 
True 
+0

非常感谢!语法每次都会得到我。 – 2014-12-13 18:31:11