【发布时间】:2020-05-02 15:08:30
【问题描述】:
Php 足够聪明,可以让我在构建关联数组时做这样的事情...
while ($row = $mysql_result->fetch_assoc())
{
$array[$row['ip']][$row['slot']] = '';
}
...每个 IP 将有 X 个 IP 和 X 个插槽。我可以根据需要即时创建新键和其他关联数组。
python 有类似的功能吗?在构建字典时,我似乎无法做类似的事情......
rows = cur.fetchall()
host_list = {}
for row in rows:
host_list[row['ip']][row['slot']] = ''
...因为我得到这样的东西:KeyError: '192.168.1.101'
我是否必须这样做,我必须一直检查密钥是否存在,如果不存在则创建它...
rows = cur.fetchall()
host_list = {}
for row in rows:
if row['ip'] not in host_list.keys():
host_list[row['ip']] = {}
host_list[row['ip']][row['slot']] = ''
...或者有更好的方法吗?
【问题讨论】:
-
你的方法很好。您还可以在常规字典上使用
defaultdict或setdefault方法。注意,不要使用.keys()来检查一个键是否在字典中,你可以使用some_key in some_dict -
您使用
cur.fetchall()获取哪些列?我之所以这么问,是因为如果你用for ip, slot in rows:之类的东西来迭代rows,代码会变得更简洁。 -
同意清洁度acdias,但我只是希望它清楚简洁地说明正在发生的事情。做你所说的事情我不需要做这样的事情:ip = row['ip']
标签: python