per*_*alt 4 python json dictionary list python-3.x
我下面有一些 python 代码,它沿着树走下去,但我希望它沿着树向下工作,检查根据值有条件地采取一些路径。我想LandedPrice
根据条件获取树的分支fulfillmentChannel
parsed_results['LowestLanded'] = sku_multi_sku['Summary']['LowestPrices']['LowestPrice']['LandedPrice']['Amount']['value']
Run Code Online (Sandbox Code Playgroud)
沿着这棵树走下去,但是值,因为有两个LowestPrice
记录/字典为每个 condition
和fulfillmentChannel
一对返回一个。我想过滤condition=new
,fulfillmentChannel=Amazon
所以我只得到一条记录。当我解析 XML 数据时,我可以使用类似于此处的代码来完成LowestPrices/LowestPrice[@condition='new'][@fulfillmentChannel='Merchant']/LandedPrice/Amount"
此操作,但无法获得类似的代码来工作。我该如何用字典做到这一点?
"LowestPrices":{
"value":"\n ",
"LowestPrice":[
{
"value":"\n ",
"condition":{
"value":"new" #condtion new
},
"fulfillmentChannel":{
"value":"Amazon" ## fulfilllmentChannel #1
},
"LandedPrice":{
"value":"\n ",
"CurrencyCode":{
"value":"USD"
},
"Amount":{
"value":"19.57"
}
},
"ListingPrice":{
"value":"\n ",
"CurrencyCode":{
"value":"USD"
},
"Amount":{
"value":"19.57"
}
},
"Shipping":{
"value":"\n ",
"CurrencyCode":{
"value":"USD"
},
"Amount":{
"value":"0.00"
}
}
},
{
"value":"\n ",
"condition":{
"value":"new"
},
"fulfillmentChannel":{
"value":"Merchant"
},
"LandedPrice":{
"value":"\n ",
"CurrencyCode":{
"value":"USD"
},
"Amount":{
"value":"19.25"
}
},
"ListingPrice":{
"value":"\n ",
"CurrencyCode":{
"value":"USD"
},
"Amount":{
"value":"19.25"
}
},
"Shipping":{
"value":"\n ",
"CurrencyCode":{
"value":"USD"
},
"Amount":{
"value":"0.00"
}
}
}
]
},
Run Code Online (Sandbox Code Playgroud)
您可以将列表推导式与条件逻辑结合使用来达到您的目的,如下所示:
my_dict = {
"LowestPrices": {
"value": "\n ",
"LowestPrice": [{
"value": "\n ",
"condition": {
"value": "new"
},
"fulfillmentChannel": {
"value": "Amazon"
},
"LandedPrice": {
"value": "\n ",
"CurrencyCode": {
"value": "USD"
},
"Amount": {
"value": "19.57"
}
},
"ListingPrice": {
"value": "\n ",
"CurrencyCode": {
"value": "USD"
},
"Amount": {
"value": "19.57"
}
},
"Shipping": {
"value": "\n ",
"CurrencyCode": {
"value": "USD"
},
"Amount": {
"value": "0.00"
}
}
},
{
"value": "\n ",
"condition": {
"value": "new"
},
"fulfillmentChannel": {
"value": "Merchant"
},
"LandedPrice": {
"value": "\n ",
"CurrencyCode": {
"value": "USD"
},
"Amount": {
"value": "19.25"
}
},
"ListingPrice": {
"value": "\n ",
"CurrencyCode": {
"value": "USD"
},
"Amount": {
"value": "19.25"
}
},
"Shipping": {
"value": "\n ",
"CurrencyCode": {
"value": "USD"
},
"Amount": {
"value": "0.00"
}
}
}
]
},
}
lowest_prices = [x for x in my_dict["LowestPrices"]["LowestPrice"] if
x["condition"]["value"] == "new"
and x["fulfillmentChannel"]["value"] == "Amazon"]
Run Code Online (Sandbox Code Playgroud)
lowest_prices
是满足所需条件的所有字典的列表。如果您确定您的情况下只有一个字典满足条件,或者您只想获取第一个字典的数量,您只需执行以下操作:
if len(lowest_prices) > 0:
amount = lowest_prices[0]["LandedPrice"]["Amount"]["value"]
print(amount)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
313 次 |
最近记录: |