Pythonの深さは辞書キーの対応する値を探して、多層のネストされた辞書の中であなたのデータを見つけます
10393 ワード
!!これは直接使える方法です!!
効果を見て!このような多層ネストされた多次元辞書があります: もし私たちがデータを取り出したいなら、とても面倒です...... そこで面倒を減らすために、私は直接使用できる関数を書きました: がいい!しかし、このdata辞書には2つの名前の同じキーがあります. 心配しないで!ご覧ください: ええ、関数はキー名に一致するすべての値を直接見つけました.次はこの2つの方法を直接放出します:
終わります.
PurePeace 2020年3月24日
効果を見て!
#
data = {
' ': {
' ': {
' ': ' ',
' ': {
' ': [' !'],
' ': ' ',
' , ': '999'
}
},
' ': ' ',
' ': ' '
},
' ': ' ',
' ': {
' ': ' ',
' ': {
' ': {
' ': ' '
}
}
}
}
#
= data[' '][' '][' '][' ']
#
= find(' ', data)
print( )
:[' !']
** **
ですが、問題はありませんか.#
= findAll(' ',data)
print( )
:[{' ': ' ', ' ': {' ': {' ': ' '}}}, ' ']
#
def find(target, dictData, notFound=' '):
queue = [dictData]
while len(queue) > 0:
data = queue.pop()
for key, value in data.items():
if key == target: return value
elif type(value) == dict: queue.append(value)
return notFound
# ,
def findAll(target, dictData, notFound=[]):
queue = [dictData]
result = []
while len(queue) > 0:
data = queue.pop()
for key, value in data.items():
if key == target: result.append(value)
elif type(value) == dict: queue.append(value)
if not result: result = notFound
return result
終わります.
PurePeace 2020年3月24日