好吧,我有这样的字典,其中令牌号是关键。内部有名称,也有按键。我想过滤掉罢工相同且名称包含股票名称的那些键和值。 因此,可以说TATASTEEL为股票名称,行权价为540。因此,我想过滤掉该股票,并为此获得2个字典项,即22958594:{'name':'TATASTEEL19DEC540PE','Strike':540.0},22958338:{ 'name':'TATASTEEL19DEC540CE','Strike':540.0}
22958594: {'name': 'TATASTEEL19DEC540PE', 'Strike': 540.0},
22958338: {'name': 'TATASTEEL19DEC540CE', 'Strike': 540.0},
22958082: {'name': 'TATASTEEL19DEC530PE', 'Strike': 530.0},
22957826: {'name': 'TATASTEEL19DEC530CE', 'Strike': 530.0},
22957570: {'name': 'TATASTEEL19DEC520PE', 'Strike': 520.0},
22957314: {'name': 'TATASTEEL19DEC520CE', 'Strike': 520.0},
22957058: {'name': 'TATASTEEL19DEC510PE', 'Strike': 510.0},
22956802: {'name': 'TATASTEEL19DEC510CE', 'Strike': 510.0},
22956546: {'name': 'TATASTEEL19DEC500PE', 'Strike': 500.0},
22956290: {'name': 'TATASTEEL19DEC500CE', 'Strike': 500.0},
22956034: {'name': 'TATASTEEL19DEC490PE', 'Strike': 490.0},
22955778: {'name': 'TATASTEEL19DEC490CE', 'Strike': 490.0},
22955522: {'name': 'TATASTEEL19DEC480PE', 'Strike': 480.0},
22955266: {'name': 'TATASTEEL19DEC480CE', 'Strike': 480.0},
22955010: {'name': 'TATASTEEL19DEC470PE', 'Strike': 470.0},
22954754: {'name': 'TATASTEEL19DEC470CE', 'Strike': 470.0},
22954498: {'name': 'TATASTEEL19DEC460PE', 'Strike': 460.0},
答案 0 :(得分:3)
对此有多种方法,您需要对要过滤的精确程度进行更具体的说明。但是要显示上面要求的示例,我会做类似这样的事情。
original_data = {22958594: {'name': 'TATASTEEL19DEC540PE', 'Strike': 540.0}, 22958338: {'name': 'TATASTEEL19DEC540CE', 'Strike': 540.0}, 22958082: {'name': 'TATASTEEL19DEC530PE', 'Strike': 530.0},
22957826: {'name': 'TATASTEEL19DEC530CE', 'Strike': 530.0}, 22957570: {'name': 'TATASTEEL19DEC520PE', 'Strike': 520.0}, 22957314: {'name': 'TATASTEEL19DEC520CE', 'Strike': 520.0},
22957058: {'name': 'TATASTEEL19DEC510PE', 'Strike': 510.0}, 22956802: {'name': 'TATASTEEL19DEC510CE', 'Strike': 510.0}, 22956546: {'name': 'TATASTEEL19DEC500PE', 'Strike': 500.0},
22956290: {'name': 'TATASTEEL19DEC500CE', 'Strike': 500.0}, 22956034: {'name': 'TATASTEEL19DEC490PE', 'Strike': 490.0}, 22955778: {'name': 'TATASTEEL19DEC490CE', 'Strike': 490.0},
22955522: {'name': 'TATASTEEL19DEC480PE', 'Strike': 480.0}, 22955266: {'name': 'TATASTEEL19DEC480CE', 'Strike': 480.0}, 22955010: {'name': 'TATASTEEL19DEC470PE', 'Strike': 470.0},
22954754: {'name': 'TATASTEEL19DEC470CE', 'Strike': 470.0}, 22954498: {'name': 'TATASTEEL19DEC460PE', 'Strike': 460.0}}
strike = 540
stock_name = 'TATASTEEL'
filtered_data = {k:v for k, v in original_data.items() if v['Strike']==strike and v['name'].startswith(stock_name)}
答案 1 :(得分:2)
您可以在此处使用熊猫:
d = {
22958594: {'name': 'TATASTEEL19DEC540PE', 'Strike': 540.0},
22958338: {'name': 'TATASTEEL19DEC540CE', 'Strike': 540.0},
22958082: {'name': 'TATASTEEL19DEC530PE', 'Strike': 530.0},
22957826: {'name': 'TATASTEEL19DEC530CE', 'Strike': 530.0},
22957570: {'name': 'TATASTEEL19DEC520PE', 'Strike': 520.0},
22957314: {'name': 'TATASTEEL19DEC520CE', 'Strike': 520.0},
22957058: {'name': 'TATASTEEL19DEC510PE', 'Strike': 510.0},
22956802: {'name': 'TATASTEEL19DEC510CE', 'Strike': 510.0},
22956546: {'name': 'TATASTEEL19DEC500PE', 'Strike': 500.0},
22956290: {'name': 'TATASTEEL19DEC500CE', 'Strike': 500.0},
22956034: {'name': 'TATASTEEL19DEC490PE', 'Strike': 490.0},
22955778: {'name': 'TATASTEEL19DEC490CE', 'Strike': 490.0},
22955522: {'name': 'TATASTEEL19DEC480PE', 'Strike': 480.0},
22955266: {'name': 'TATASTEEL19DEC480CE', 'Strike': 480.0},
22955010: {'name': 'TATASTEEL19DEC470PE', 'Strike': 470.0},
22954754: {'name': 'TATASTEEL19DEC470CE', 'Strike': 470.0},
22954498: {'name': 'TATASTEEL19DEC460PE', 'Strike': 460.0}}
import pandas as pd
df = pd.DataFrame(d).T # .T was used for transpose of dataframe
print(df[df.name.str.contains('TATASTEEL') & (df.Strike == 540)].T.to_dict()) # here i used boolean indexing
输出
{22958594: {'Strike': 540.0, 'name': 'TATASTEEL19DEC540PE'},
22958338: {'Strike': 540.0, 'name': 'TATASTEEL19DEC540CE'}}