词典中的Python搜索

2024-04-25 07:44:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在变量中寻找一个特定的值

market = {'fruit': [{'fruit_id': '25', 'fruit': 'banana', weight: 1.00}, {'fruit_id': '15', 'fruit': 'apple', weight: 1 .50}, {'fruit_id': '5', 'fruit': 'pear', weight: 2.00}]}


#print(type(market))

<class 'dict'>

我怎样才能找到水果id为“15”的水果


Tags: idappletypemarketdictclassbananapear
3条回答

如果你需要一次以上的ID搜索水果,考虑创建一个DID,其中ID是关键:

>>> market = {'fruit': [
...     {'fruit_id': '25', 'fruit': 'banana', 'weight': 1.00},
...     {'fruit_id': '15', 'fruit': 'apple', 'weight': 1.50},
...     {'fruit_id': '5', 'fruit': 'pear', 'weight': 2.00}
... ]}
>>>
>>> fruits_by_id = {f['fruit_id']: f for f in market['fruit']}
>>> fruits_by_id['15']
{'fruit_id': '15', 'fruit': 'apple', 'weight': 1.5}

一旦你有了一个dict,其中一个特定的数据段是键,通过键定位该数据段对你和计算机来说都很容易(通过键定位dict中的一个项目是“恒定时间”,实际上是瞬时的,而通过整个dict进行迭代需要花费大量的时间,这取决于dict的大小)

如果您不受market定义方式的限制,并且您的程序大部分时间都将通过其id查找项目,那么简单地预先将market['fruit']设置为dict(键入id)而不是将其设置为列表可能更有意义。考虑下面的表示:

>>> market = {'fruit': {
...     25: {'name': 'banana', 'weight': 1.00},
...     15: {'name': 'apple', 'weight': 1.50},
...     5: {'name': 'pear', 'weight': 2.00}
... }}
>>> market['fruit'][15]
{'name': 'apple', 'weight': 1.5}

您可以从marketsdict迭代fruit的值并进行搜索

for fr in market['fruit']:
    if fr['fruit_id'] == '15':
        ans = fr

print(ans)
ans =  {'fruit_id': '15', 'fruit': 'apple', 'weight': 1.50}

除了注释之外,您还可以创建一个函数来在market字典中搜索:

market = {'fruit': [{'fruit_id': '25', 'fruit': 'banana', 'weight': 1.0},
                    {'fruit_id': '15', 'fruit': 'apple', 'weight': 1.5},
                    {'fruit_id': '5', 'fruit': 'pear', 'weight': 2.0}]}

def search_by_id(fruit_id):
    for fruit in market['fruit']:
        if fruit['fruit_id'] == fruit_id:
            return fruit['fruit']

如何使用它:

>>> search_by_id('15')
'apple'

>>> search_by_id('5')
'pear'

相关问题 更多 >