<p>如果需要在用户列表中按ID查找用户,可以使用<code>filter</code>函数:</p>
<pre><code>dict = {
'activeAccount': True,
'country': 'USA',
'state': 'CA',
'users': [
{
'id': 'A',
'firstName': 'Tom',
'lastName': 'Cruise',
'creditScore': '713',
'balance': '65897.22',
'debts': '12414.12',
'savings': '15231.23'
},
{
'id': 'B',
'firstName': 'Jon',
'lastName': 'Snow',
'creditScore': '648',
'balance': '12366.23',
'debts': '522',
'savings': '121588'
},
{
'id': 'C',
'firstName': 'Rick',
'lastName': 'Sanchez',
'creditScore': '655',
'balance': '556425.33',
'debts': '0',
'savings': '125122.23'
},
{
'id': 'D',
'firstName': 'Monty',
'lastName': 'Python',
'creditScore': '815',
'balance': '4512699.13',
'debts': '4.25',
'savings': '5499865.12'
}
]
}
# get the user with ID:"D"
user = list(filter(lambda u: u["id"] == "D", dict["users"]))[0]
# get the value
cScore = user["creditScore"] # < Output: 815
</code></pre>
<h3>说明</h3>
<p><code>lambda u: u["id"] == "D"</code>表示:如果给定元素的属性“id”为“D”,则返回True</p>
<p>它可以重写为普通函数:</p>
<pre><code>def check_D(user):
return user["id"] == "D"
user = list(filter(check_D, dict["users"]))[0]
</code></pre>
<p><code>filter( <condition> , dict["users"])</code>表示:遍历列表<code>dict["users"]</code>并返回满足条件的所有元素(在本例中为“lambda”,也可以是任何返回True或False的函数)</p>
<p><code>user = list( ... )[0]</code>由于筛选函数返回一个对象,因此需要将该对象转换为列表并获取列表的第一个元素</p>
<h3>另一个选项</h3>
<p>您可以使用条件(id==“D”)构建列表理解,并获取列表的第一个元素:</p>
<pre><code>creditScore = [usr["creditScore"] for usr in dict["users"] if usr["id"] == "D"][0]
print(creditScore) # < Output: 815
</code></pre>