如何从python中的字典列表中提取特定值

2024-10-02 02:36:29 发布

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

我有一个如下所示的字典列表,我想使用python为特定orderID提取partID和相应的数量,但我不知道怎么做

dataList = [{'orderID': 'D00001', 'customerID': 'C00001', 'partID': 'P00001', 'quantity': 2},
 {'orderID': 'D00002', 'customerID': 'C00002', 'partID': 'P00002', 'quantity': 1},
 {'orderID': 'D00003', 'customerID': 'C00003', 'partID': 'P00001', 'quantity': 1},
 {'orderID': 'D00004', 'customerID': 'C00004', 'partID': 'P00003', 'quantity': 3}]

因此,例如,当我在我的dataList中搜索一个特定的orderID == 'D00003'时,我希望同时接收指定顺序的partID ('P00001'),以及相应的quantity (1)。你会怎么做?非常感谢您的帮助


Tags: 列表数量字典quantitycustomeriddatalistorderidpartid
3条回答

您可以使用:

results = [[x['orderID'], x['partID'], x['quantity']] for x in dataList]
for i in results:
    print(i)

还有

results = [['Order ID: ' + x['orderID'], 'Part ID: ' + x['partID'],'Quantity: 
' + str(x['quantity'])] for x in dataList]

视情况而定

你不会经常这样做,你可以反复浏览字典列表,直到找到“正确的”一个:

search_for_order_id = 'D00001'
for d in dataList:
    if d['orderID'] == search_for_order_id:
        print(d['partID'], d['quantity'])
        break  # assuming orderID is unique

输出

P00001 2

因为这个解是O(n),如果你要做这个搜索很多次,它就会加起来

在这种情况下,最好将数据转换为字典字典,其中orderID是外键(同样,假设orderID是唯一的):

 better = {d['orderID']: d for d in dataList}

这也是O(n),但你只付一次。任何后续查找都是O(1)字典查找:

search_for_order_id = 'D00001'
print(better[search_for_order_id]['partID'], better[search_for_order_id]['quantity'])

还有输出

P00001 2

我相信您希望熟悉^{}包,它对数据分析非常有用。如果你遇到了这样的问题,我建议你花点时间在pandas上做一个教程。它可以做很多,而且很受欢迎

您的dataListDataFrame结构非常相似,因此您要查找的内容非常简单:

import pandas as pd
df = pd.DataFrame(dataList)
df[df['orderID']=='D00003']

相关问题 更多 >

    热门问题