2016-12-07 11 views
2

私は以下のフォーマットのリストを持っています。選択された要素だけで既存のものから別のリストを作成するにはどうすればいいですか?Pythonで既存のリストからリストを作成するには

[{'UserDiscount': 0.0, 'CostTotalInvEOPAmount': 940.0, 'WeekEndingData': u'2016-10-08', 'WeeksOnHand': 0.0, 'UnitTotalInvEOPQuantity': 250.0, 'WeeksOfSales': 0.0, 'UnitCostAmount': 3.76, 'Week': u'2016 Wk 36', 'CostReceiptAmount': 940.0, 'UnitSalesQuantity': 0.0, 'UnitReceiptQuantity': 250.0, 'Demand': 0.0, 'InventoryBOP': 0.0, 'PEMDiscount': 0.0, 'ElasticLift': 0.0, 'StoreCount': 0, 'PriceStatus': 4, 'UnitOnOrderQuantity': None, 'ReceiptSizeContributions': [{u'sizeId': u'e1656ac7-1cc1-40ce-b485-989bba9d758d', u'contribution': 1.0}], 'CostSalesAmount': 0.0, 'LifeCycleProperties': {u'IsAtRegularPrice': False, u'IsAtMarkdown': False, u'IsFinished': False, u'IsPreSeason': True}, 'MardownDiscount': 0.0, 'RecommendedReceipt': 250.0, 'RecommendedReceiptSizeContributions': [{u'sizeId': u'e1656ac7-1cc1-40ce-b485-989bba9d758d', u'contribution': 1.0}], 'UnitTotalInvBOPQuantity': 0.0, 'CostOnOrderAmount': None, 'InventoryEOP': 250.0, 'CostTotalInvBOPAmount': 0.0, 'Receipt': 250.0, 'Sales': 0.0, 'LostSales': 0.0, 'TotalDiscount': 0.0, 'RetailSalesAmount': 0.0}, 
{'UserDiscount': 0.0, 'CostTotalInvEOPAmount': 940.0, 'WeekEndingData': u'2016-10-15', 'WeeksOnHand': 0.0, 'UnitTotalInvEOPQuantity': 250.0, 'WeeksOfSales': 15.784951285314385, 'UnitCostAmount': 3.76, 'Week': u'2016 Wk 37', 'CostReceiptAmount': 0.0, 'UnitSalesQuantity': 0.0, 'UnitReceiptQuantity': 0.0, 'Demand': 0.0, 'InventoryBOP': 250.0, 'PEMDiscount': 0.0, 'ElasticLift': 0.0, 'StoreCount': 0, 'PriceStatus': 4, 'UnitOnOrderQuantity': None, 'ReceiptSizeContributions': [], 'CostSalesAmount': 0.0, 'LifeCycleProperties': {u'IsAtRegularPrice': False, u'IsAtMarkdown': False, u'IsFinished': False, u'IsPreSeason': True}, 'MardownDiscount': 0.0, 'RecommendedReceipt': 0.0, 'RecommendedReceiptSizeContributions': [], 'UnitTotalInvBOPQuantity': 250.0, 'CostOnOrderAmount': None, 'InventoryEOP': 250.0, 'CostTotalInvBOPAmount': 940.0, 'Receipt': 0.0, 'Sales': 0.0, 'LostSales': 0.0, 'TotalDiscount': 0.0, 'RetailSalesAmount': 0.0}] 

新しいリストには次の要素が含まれます。

[{'UserDiscount': 0.0, 'CostTotalInvEOPAmount': 940.0, 'WeekEndingData': u'2016-10-08', 'WeeksOnHand': 0.0, 'UnitTotalInvEOPQuantity': 250.0, 'WeeksOfSales': 0.0, 'UnitCostAmount': 3.76, 'Week': u'2016 Wk 36', 'CostReceiptAmount': 940.0, 'UnitSalesQuantity': 0.0, 'UnitReceiptQuantity': 250.0, 'Demand': 0.0, 'InventoryBOP': 0.0, 'PEMDiscount': 0.0, 'ElasticLift': 0.0, 'StoreCount': 0, 'PriceStatus': 4, 'UnitOnOrderQuantity': None, 'CostSalesAmount': 0.0, 'RecommendedReceipt': 250.0, 'RetailSalesAmount': 0.0}, 
{'UserDiscount': 0.0, 'CostTotalInvEOPAmount': 940.0, 'WeekEndingData': u'2016-10-15', 'WeeksOnHand': 0.0, 'UnitTotalInvEOPQuantity': 250.0, 'WeeksOfSales': 15.784951285314385, 'UnitCostAmount': 3.76, 'Week': u'2016 Wk 37', 'CostReceiptAmount': 0.0, 'UnitSalesQuantity': 0.0, 'UnitReceiptQuantity': 0.0, 'Demand': 0.0, 'InventoryBOP': 250.0, 'PEMDiscount': 0.0, 'ElasticLift': 0.0, 'StoreCount': 0, 'PriceStatus': 4, 'UnitOnOrderQuantity': None, 'CostSalesAmount': 0.0, 'RecommendedReceipt': 0.0, 'RetailSalesAmount': 0.0}] 
+0

であなたのdictsの構造を変更することができますこの方法を使用してhttps://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

[l for l in your_list if l['UserDiscount'] >= 1 ] [{'UserDiscount': l['UserDiscount'],'CostTotalInvEOPAmount': l['CostTotalInvEOPAmount']} for l in your_list ] 

リストの内包表記を使用することができますか?このリストには2つの要素しかないので、リスト内の辞書で何かしたいと思います。 –

+0

こんにちはgabor、あなたの質問を再構築してください。選択の背後にある方法ではどういう意味ですか?それは新しいリストの要素を選択することですか? –

+0

はいgabor、私は内側の辞書からいくつかの要素をフィルタリングしたい –

答えて

2

リストが2つあります。辞書をフィルタリングするには、あなたはまた、あなたがはるかにきれい私見です

import funcy 
    mydict={1:1,2:2,3:3} 
    keep=[1,2] 
    funcy.project(mydict,keep) 
=> {1: 1, 2: 2} 

を行うことができますfuncyを使用して

keep=[key1,key2] #keys you wanna keep 
    newList = [] 
    for item in mylist: 
     d = dict((key,value) for key, value in item.iteritems() if key in keep) 
     newlist.append(d) 
    del mylist 

を試すことができます。

+1

ありがとう@themistoklik。これは動作します –

+0

すべてのリスト要素、つまりnewlist [0]、newlist [1]に等しい数のキーが含まれているかどうかを確認する方法。特定のキーがnewlist [1]にない場合、その要素をリストから削除する必要があります。すなわちnewlist.pop [1] –

+0

@occasionalvisitor to len(dict.keys())を実行するキーの数を確認します。欠落しているキーを削除するには、KeyError:#popを除く、dict [key]を試してください。 (キーの(キー、値)、items.iteritemsの値()filter_columnsでCOLS)の項目内のすべての(COLSする場合) – themistoklik

1

あなたは、あなたのリストの要素をフィルタリングし、選択の背後にある方法であり、どのようなリスト

関連する問題