根据Python中的键值将dict放入新列表中

时间:2014-12-13 18:16:34

标签: python python-2.7 dictionary append

我的数据如下:

[{'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'}]        

如果'艺术家的价值为' key == x,我想将整个dict放入一个新列表到目前为止,我的代码只返回一个空白列表。

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

任何帮助都会非常感激!!

1 个答案:

答案 0 :(得分: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