【问题标题】:How to pull only certain items from all the keys?如何从所有键中仅提取某些项目?
【发布时间】:2018-09-30 23:04:35
【问题描述】:

我正在使用 Alpha Vantage API。如果我只想从这本字典中提取所有日子的收盘价。我该怎么办?我不想打印,但我想保存一个只有收盘价的新字典:

{
    "Meta Data": {
        "1. Information": "Daily Prices (open, high, low, close) and Volumes",
        "2. Symbol": "MSFT",
        "3. Last Refreshed": "2018-09-28",
        "4. Output Size": "Compact",
        "5. Time Zone": "US/Eastern"
    },
    "Time Series (Daily)": {
        "2018-09-28": {
            "1. open": "114.1900",
            "2. high": "114.5700",
            "3. low": "113.6800",
            "4. close": "114.3700",
            "5. volume": "21647811"
        },
        "2018-09-27": {
            "1. open": "114.7800",
            "2. high": "114.9100",
            "3. low": "114.2000",
            "4. close": "114.4100",
            "5. volume": "19091299"
        },
        "2018-09-26": {
            "1. open": "114.4700",
            "2. high": "115.0550",
            "3. low": "113.7400",
            "4. close": "113.9800",
            "5. volume": "19352025"
        },
        "2018-09-25": {
            "1. open": "114.8000",
            "2. high": "115.1000",
            "3. low": "113.7500",
            "4. close": "114.4500",
            "5. volume": "22668014"
        },

【问题讨论】:

    标签: python dictionary nested


    【解决方案1】:

    您可以使用字典理解和dict.items。由于您正在处理数字数据,因此您可能还希望转换为float。给定一个输入字典d

    closes_dict = {k: float(v['4. close']) for k, v in d['Time Series (Daily)'].items()}
    
    {'2018-09-28': 114.37,
     '2018-09-27': 114.41,
     '2018-09-26': 113.98,
     '2018-09-25': 114.45}
    

    【讨论】:

    • 这个答案也很棒!您如何将开盘价添加到每个键?
    • add the opening price to each key - 不确定你的意思。您可以将'4 close' 更改为'1. open',或使用列表,例如[float(v['1. open']), float(v['4. close'])].
    【解决方案2】:

    在这里,dict 参数是您从 API 获得的。这将返回{'2018-09-28': ('114.1900', '114.3700'), '2018-09-27': ('114.7800', '114.4100'), '2018-09-26': ('114.4700', '113.9800'), '2018-09-25': ('114.8000', '114.4500')} 如果您有不明白的地方或需要帮助,请随时在 cmets 中提问。

    def getCloseOpen(alphaAPI):
        days = alphaAPI["Time Series (Daily)"]
        targData = {}
        for day,data in days.items():
            targData[day] = (data["1. open"],data["4. close"])
        return targData
    

    【讨论】:

    • 这太棒了!谢谢
    • 请不要隐藏内置函数,即不要使用dict作为变量或参数名称,使用dict_input_dictd等。
    • 有没有办法让我同时得到开盘价和收盘价?
    • 是的,我已经更新了我的答案,以备将来参考,要获取另一个数据部分,只需将data["key"] 添加到targData[day] 的末尾
    猜你喜欢
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多