过滤字典列表

Den*_*tre 0 python dictionary list

这是我的示例:

dictlist = [{'first': 'James', 'last': 'Joule'}, 
            {'first': 'James','last': 'Watt'},
            {'first': 'Christian','last': 'Doppler'}]
Run Code Online (Sandbox Code Playgroud)

我正在尝试获得姓氏。如果在模型中,则代码为:

getdata = Name.objects.filter(name="Christian")
getLastName = getdata.last
Run Code Online (Sandbox Code Playgroud)

我会的"Doppler"

chu*_*ash 9

dictlist = [{'first': 'James', 'last': 'Joule'}, {'first': 'James','last': 'Watt'},{'first': 'Christian','last': 'Doppler'}]
the_jameses = [d for d in dictlist if d['first'] == 'James']
Run Code Online (Sandbox Code Playgroud)

结果list只包含:

[{'first': 'James', 'last': 'Joule'}, {'first': 'James', 'last': 'Watt'}]
Run Code Online (Sandbox Code Playgroud)


Sdw*_*daw 5

这是一个非常简单的列表理解解决方案:

>>> dictlist = [{'first': 'James', 'last': 'Joule'}, {'first': 'James','last': 'Watt'},{'first': 'Christian','last': 'Doppler'}]
>>> [x['last'] for x in dictlist if x['first'] == 'Christian']
['Doppler']
Run Code Online (Sandbox Code Playgroud)


Tim*_*Tim 3

像这样的东西应该有效

last_name = ''

for d in dictList:
  if d['first'] == 'Christian':
    last_name = d['last']
    break
Run Code Online (Sandbox Code Playgroud)