繁体   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