我正在尝试使用字典中的独特股票代码和他们各自的S& P 500的市值。我正在添加一个额外的股票代码(让我们称之为股票代码),我的最终目标是定义一个变量如果添加了STACK,那么S& P 500中的下一个最大的自动收报机。我已经拥有了数据库,并添加了' STACK'但是,我不确定如何正确管理它。
database = {u'AGN': 73.64, u'EOG': 53.83, u'CPB': 14.77, u'EVHC': 5.86,
u'IDXX': 13.87, u'QRVO': 9.61, u'JWN': 7.77, u'SBAC': 18.05, u'JBHT':
11.12, u'TAP': 17.03, u'VRTX': 38.73, u'BWA': 10.29....and so on}
for x, y in database.items(): #finds the market cap of STACK
if x == "STACK":
stackcap = y
new = list(enumerate(sorted(database.values(), reverse= True)))
print new
#This prints like this: [(0, 474.03), (1, 406.84), (2, 360.86), (3,
339.27), (4, 322.41), (5, 320.01), (6, 278.76)...etc.]
for x, y in new.items():
if stackcap == y:
stackrank = x
if x == [stackrank+1]:
nextcap = y
print nextcap
例如,如果STACK的市值为73.65M,我会打印" AGN"因为AGN的市值可能是下一个最高的73.64M。
以上回报: Traceback(最近一次调用最后一次): 如果x == [stackrank + 1]: TypeError:+的不支持的操作数类型:' builtin_function_or_method'和' int'
提前致谢。
答案 0 :(得分:1)
如果我理解正确,您的目标是找到最大上限小于STACK上限的股票代码?如果是这样,那么您可以收集满足此约束条件的代码并获取其最大值:
private static void mainInit() {
// do some init stuff here...(and show it to the user)
Alert alert = new Alert(AlertType.INFORMATION);
// program never reaches this line...
alert.setTitle("Hallo");
}
public void start(Stage primaryStage) {
Task<Void> initTask = new Task<Void>() {
@Override
protected Void call() throws Exception {
mainInit();
return null;
}
};
new Thread(initTask).start();
}
这将打印:database = {
u'AGN': 73.64, u'EOG': 53.83, u'CPB': 14.77, u'EVHC': 5.86,
u'IDXX': 13.87, u'QRVO': 9.61, u'JWN': 7.77, u'SBAC': 18.05,
u'JBHT': 11.12, u'TAP': 17.03, u'VRTX': 38.73, u'BWA': 10.29,
u'STACK': 73.65
}
below_stack = ((t, c) for t, c in database.items() if c < database['STACK'])
next_cap = max(below_stack, key=lambda item: item[1])
print next_cap
。