我有字典詞典的值,如:蟒蛇查找字典在字典
myDict = {'custom_field1': {'label': 'CNAMEs', 'data': 'bar1 bar2' },
'custom_field2': {'label': 'LocalForward', 'data': '8080:localhost:80' },
'custom_field3': None,
'custom_field4': {'label': 'ProxyCommand', 'data': 'ssh -q [email protected] nc -q0 %h 22' },
'custom_field5': {'label': 'SomeMoreInfos', 'data': 'AboutSomethingElse' },
'created_by': {'username': 'someperson', 'date': 'recently' },
'name': 'hostname'
}
中有我不關心字典許多其他鍵/值。獲取標籤爲foo的custom_field的數據,然後標籤爲bar的數據,然後標籤更多的數據的數據是一種簡單的方法? 因爲目前我做這樣的:
customItem = []
for field in range(1, 10):
new_field = myDict.get('custom_field%s' % field)
if new_field is not None:
customItem.append(new_field)
for field in customItem:
if field.get('label') == 'foo' and field.get('data') != '':
for part in field.get('data').split():
"""do something for each"""
for field in customItem:
if field.get('label') == 'bar' and field.get('data') != '':
print (field.get('data'))
我的總體目標是爲客戶創造一個自動化的ssh_config文件,所以用一個字典爲主機,它會創建幾個ssh_config中的條目,結果應該像這樣的:
hostname (from label 'name')
ProxyCommand ssh -q [email protected] nc -q0 %h 22
hostname-fwd (twice, because there was data behind label 'LocalForward')
ProxyCommand ssh -q [email protected] nc -q0 %h 22
LocalForward 8080:localhost:80
bar1 (as found from label 'CNAMEs')
ProxyCommand ssh -q [email protected] nc -q0 %h 22
bar1-fwd (twice, just because there was data behind label 'bar')
ProxyCommand ssh -q [email protected] nc -q0 %h 22
LocalForward 8080:localhost:80
bar2 (same as with bar1)
ProxyCommand ssh -q [email protected] nc -q0 %h 22
bar2-fwd
ProxyCommand ssh -q [email protected] nc -q0 %h 22
LocalForward 8080:localhost:80
編輯我想更具體與我現在的任務,因爲只是隨機的sampleData不是那麼容易理解,不好意思。
您的問題的第二部分是非常不清楚,但似乎是一個單獨的問題,從你在第一部分提出的問題。請分別提問每個問題! – taleinat
@Andreas Hubert你的問題的第二部分需要更多的信息來回答。也許你可以嘗試將兩者結合成一個問題 – Obsidian
如果您試圖通過記錄中的不同字段對記錄進行索引,您可能需要使用適當的關係數據庫。對於小數據集,只需使用[sqlite3'模塊](https://docs.python.org/3/library/sqlite3.html)就可以工作(而且你甚至不需要真正的磁盤數據庫;'sqlite3'通過連接到「」:memory:「'」支持瞬態數據的內存數據庫。 – ShadowRanger