[英]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.