簡體   English   中英

如何在python中獲取嵌套字典的內部索引

[英]How to get the inner indexes of a nested dictionary in python

我有像這樣的字典

A = {1:{1:50,2:60,5:90},2:{7:55,10:102},4:{10:100,12:40}}

我如何訪問字典的內部索引,即鍵1,2、5或鍵10和12,我的意思是我想訪問這些元素以將它們存儲在數組的特定位置,但是在使用循環時,因為某些鍵缺席,則存在某種錯誤。(當我在嵌套循環中嘗試使用A [i] [j]時)。 如何解決按鍵的這種不均勻性

如果要訪問特定鍵的值,則可以使用A[outer_key][inner_key]

例如

>>> A[1][1]
50
>>> A[2][10]
102

如果要遍歷所有鍵,可以使用for如下所示。

>>> A
{1: {1: 50, 2: 60, 5: 90}, 2: {10: 102, 7: 55}, 4: {10: 100, 12: 40}}
>>> for outer_key in A:
...     print 'Outer Key = ',outer_key
...     for inner_key in A[outer_key]:
...             print '%d,%d' % (inner_key,A[outer_key][inner_key])
... 
Outer Key =  1
1,50
2,60
5,90
Outer Key =  2
10,102
7,55
Outer Key =  4
10,100
12,40

這將遍歷結構並將值填充到numpy數組中:

A = {1:{1:50,2:60,5:90},2:{7:55,10:102},4:{10:100,12:40}}
B = numpy.zeros((4, 12))

for i, row in A.items():
    for j, value in row.items():
        B[i-1, j-1] = value

您應該使用內置的迭代器來完成此任務。

A = {1:{1:50,2:60,5:90},2:{7:55,10:102},4:{10:100,12:40}}

myArray = list()

for innerDict in A.values():
    for value in innerDict.values():
        myArray.append(value)

print (myArray)
A = {1:{1:50,2:60,5:90},2:{7:55,10:102},4:{10:100,12:40}}

values =[ x for y in A.itervalues() for x in y.itervalues()]
[50, 60, 90, 102, 55, 100, 40]

如果要鍵和值配對:

key_values =[ x for y in A.itervalues() for x in y.items()]
print key_values

[(1, 50), (2, 60), (5, 90), (10, 102), (7, 55), (10, 100), (12, 40)]

為了獲取子組件(rj是JSON對象)

items=rj.items()
si = sorted(items, key=operator.itemgetter(0))

for i in si:
    t=-1
    print i[0]
    for k in i[1]:
        t+=1
        print '   ',i[1].keys()[t],':',i[1].get(k)

print len(rj)

您可以在dictionary上使用get函數,當在dictionary找不到鍵時,該函數將返回None 因此,如果所有通用鍵都保存在某個set ,則可以通過它進行迭代:

A = {1:{1:50,2:60,5:90},2:{7:55,10:102},4:{10:100,12:40}}

# storing all keys in set not to save repeated keys
keys_list = {key for inner_dict in A.values() for key in list(inner_dict)}

# for each outer key
for i in A.keys():
    print(A[i]) # printing each key to check

    for j in keys_list: # looping through inner dictionary
        if A[i].get(j) is not None: # if the key is found then it is not None
            print ('Outer Key: ', i, " Inner Key: ", j, " Value: ",  A[i][j]) # now you can use A[i][j]

    print('--------------------------------------------------')

輸出:

{1: 50, 2: 60, 5: 90}
Outer Key:  1  Inner Key:  1  Value:  50
Outer Key:  1  Inner Key:  2  Value:  60
Outer Key:  1  Inner Key:  5  Value:  90
--------------------------------------------------
{10: 102, 7: 55}
Outer Key:  2  Inner Key:  7  Value:  55
Outer Key:  2  Inner Key:  10  Value:  102
--------------------------------------------------
{10: 100, 12: 40}
Outer Key:  4  Inner Key:  10  Value:  100
Outer Key:  4  Inner Key:  12  Value:  40
--------------------------------------------------

暫無
暫無

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

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