簡體   English   中英

從列表的嵌套字典中按索引訪問值

[英]Access value by index from nested dictionary of lists

我正在構建包含列表的嵌套字典(因此嵌套鍵可以容納多個值):

#!/usr/bin/env python
from collections import defaultdict
import json

start = [1, 1, 19, 20, 30, 50, 50, 51]
events = ['event1', 'event1', 'event2', 'event2', 'event3', 'event4', 'event4', 'event4']
chroms = ['X', 'X', 'Y', 'Y', 1, 'Z', 'Z', 'Z', 'Z']

seen = defaultdict(lambda: defaultdict(dict))

for c, b, e in zip(chroms, start, events):
    print c, b, e

    seen[c].setdefault(b, []).append(e)

看起來像:

print(json.dumps(seen, indent=4))

{
    "Y": {
        "19": [
            "event2"
        ], 
        "20": [
            "event2"
        ]
    }, 
    "X": {
        "1": [
            "event1", 
            "event1"
        ]
    }, 
    "Z": {
        "50": [
            "event4", 
            "event4"
        ], 
        "51": [
            "event4"
        ]
    }, 
    "1": {
        "30": [
            "event3"
        ]
    }
}

如何按索引訪問列表值之一?

我試過了: print seen["X"]["1"][0] ,但是得到:

KeyError:0

由於要打印的輸出json.dumps(seen, indent=4)一切都變得一個字符串( json.dumps返回字符串,因此sdumps )。

實際鍵是1 ,而不是"1"

print(seen["X"][1][0])
# event1

出現KeyError: 0的原因是由於您在dict工廠中使用defaultdict seen["X"]["1"]不存在,因此創建了一個新的空字典:

print(seen["X"]["1"])
# {}

所以當然seen["X"]["1"][0]將引發KeyError: 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM