我的数据如下:
[{'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
任何帮助都会非常感激!!
答案 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