我有一本字典,如下图所示。现在,我需要将密钥及其对应的mpath
一起获取,以便进一步使用它根据密钥识别其插槽号。我该如何实现?
我尝试了一种方法,但它给了我关键错误。
multipath = {'/dev/sdh': {'mpath': '/dev/mapper/mpathk', 'dm': '/dev/dm-4'}, '/dev/sdi': {'mpath': '/dev/mapper/mpathk', 'dm': '/dev/dm-4'}, '/dev/sdg': {'mpath': '/dev/mapper/mpathj', 'dm': '/dev/dm-2'}, '/dev/sdf': {'mpath': '/dev/mapper/mpathj', 'dm': '/dev/dm-2'}, '/dev/sdd': {'mpath': '/dev/mapper/mpathi', 'dm': '/dev/dm-5'}, '/dev/sde': {'mpath': '/dev/mapper/mpathi', 'dm': '/dev/dm-5'}, '/dev/sdb': {'mpath': '/dev/mapper/mpathh', 'dm': '/dev/dm-6'}, '/dev/sdc': {'mpath': '/dev/mapper/mpathh', 'dm': '/dev/dm-6'}, '/dev/sdj': {'mpath': '/dev/mapper/mpathg', 'dm': '/dev/dm-3'}, '/dev/sdk': {'mpath': '/dev/mapper/mpathg', 'dm': '/dev/dm-3'}}
mpath_sd = {}
mpath_list = []
for sd, mpaths in multipath.items():
mdevs = mpathdev.get('mpath')
mpath_list.append(mdevs)
mpath_sd[sd].append(mpath_list)
我期望的输出是这样的
{'/dev/sdh':'/dev/mapper/mpathk', '/dev/sdi': '/dev/mapper/mpathk',.....}
分析解答
您所需要的可以很容易地实现为:
>>> {key: value["mpath"] for key, value in multipath.items()}
{'/dev/sdh': '/dev/mapper/mpathk', '/dev/sdi': '/dev/mapper/mpathk',
'/dev/sdg': '/dev/mapper/mpathj', '/dev/sdf': '/dev/mapper/mpathj',
'/dev/sdd': '/dev/mapper/mpathi', '/dev/sde': '/dev/mapper/mpathi',
'/dev/sdb': '/dev/mapper/mpathh', '/dev/sdc': '/dev/mapper/mpathh',
'/dev/sdj': '/dev/mapper/mpathg', '/dev/sdk': '/dev/mapper/mpathg'}