簡體   English   中英

從字典中獲取價值

[英]Get value from dict

我真的是python的新手,很抱歉,如果我的問題很傻。 從sql語句,我填寫了這個字典:

config_params = [dict(
    hostname=row[0], syslocation=row[1],
    ipaddress=socket.inet_ntoa(struct.pack('!L', row[2])),
    netmask=socket.inet_ntoa(struct.pack('!L', row[3])),
    username=row[4], password=row[5], bri1=row[6], bri2=row[7],
    bri3=row[8], bri4=row[9]) for row in cur.fetchall()
]

現在,我可以像這樣打印整個“ config_params”:

print config_params

如何從“主機名”中打印“僅”值? 它不適用於print config_params ['hostname']

感謝您的幫助,

問題是您沒有在創建dict ,而是在創建行list ,其中每個元素都是一個dict

因此,僅在第一行打印hostname

print config_params[0]['hostname']

或者,為每行打印主機名:

for row in config_params:
    print row['hostname']

……或者,如果您願意:

print '\n'.join(row['hostname'] for row in config_params)

同時,如果您僅期望第一行,則只需使用fetchone而不是遍歷fetchall

row = cur.fetchone()
config_params = dict(
    hostname=row[0], syslocation=row[1],
    ipaddress=socket.inet_ntoa(struct.pack('!L', row[2])),
    netmask=socket.inet_ntoa(struct.pack('!L', row[3])),
    username=row[4], password=row[5], bri1=row[6], bri2=row[7],
    bri3=row[8], bri4=row[9])

現在您有了一個dict


還值得注意的是,許多數據庫庫為您提供了一種以列名稱為鍵甚至更高級的方式自動為每一行創建字典的方法。 例如,使用sqlite3

con = sqlite3.connect(dbpath, factory=sqlite3.Row)
cur = con.execute('SELECT * FROM Config')
config_params = cur.fetchone()
print config_params['hostname']

您有一個字典列表,因此可以遍歷它們:

for param in config_params:
    print param['hostname']

或訪問單個項目:

print config_params[0]['hostname']

或使用列表推導僅提取主機名:

print [d['hostname'] for d in config_params]

暫無
暫無

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

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