Python 从嵌套字典中获取特定键的值,并将值存储在单独的变量中
我有以下字典:-Python 从嵌套字典中获取特定键的值,并将值存储在单独的变量中,python,dictionary,Python,Dictionary,我有以下字典:- dict={'m1': {'ip': '10.250.10.10', 'port': 6697}, 'm2': {'ip': '10.250.10.20', 'port': 6699}} 我需要在变量中存储ip值,即 a=10.250.10.10 b=10.250.10.20 有人能告诉我如何实现这一点吗?您可以创建一个生成器表达式来获取“ip”,将其解压缩并将值存储到各个变量中,如: my_dict = {'m1': {'ip': '10.250.10.10', '
dict={'m1': {'ip': '10.250.10.10', 'port': 6697}, 'm2': {'ip': '10.250.10.20', 'port': 6699}}
我需要在变量中存储ip值,即
a=10.250.10.10
b=10.250.10.20
有人能告诉我如何实现这一点吗?您可以创建一个生成器表达式来获取“ip”
,将其解压缩并将值存储到各个变量中,如:
my_dict = {'m1': {'ip': '10.250.10.10', 'port': 6697}, 'm2': {'ip': '10.250.10.20', 'port': 6699}}
a, b = (v['ip'] for v in my_dict.values())
以下是一种功能性方法,使用和as实现这一点:
上述解决方案将为您提供a
和b
如下:
>>> a
'10.250.10.10'
>>> b
'10.250.10.20'
在Python3.7+中,字典保持插入顺序,因此可以预测a
和b
的值。对于较早版本的Python,顺序是任意的,因此不能预测a
和b
的值
如果您使用的是Python版本3.6或更低版本,并且顺序对您很重要,则可以使用对字典键进行排序,并根据键的排序顺序获取值,如下所示:
sort_dict_values = [my_dict[key] for key in sorted(my_dict)]
# where `sort_dict_values` holds:
# [{'ip': '10.250.10.10', 'port': 6697}, {'ip': '10.250.10.20', 'port': 6699}]
现在,您可以使用排序dict\u值
(而不是我的dict.values()
)来执行早期操作,以获取的“ip”
,根据您所需的行为保留a
和b
的值。例如:
a, b = map(itemgetter('ip'), sort_dict_values)
# ^ instead of `my_dict.values()`
输出:
10.250.10.10 10.250.10.20
dict={'m1':{'ip':'10.250.10.10','port':6697},
'm2':{'ip':'10.250.10.20','port':6699}
a=dict['m1']['ip']
b=dict['m2']['ip']
首先,dict
是Python中的内置函数,因此我避免将其用作变量名
要从字典中获取特定值,您可以使用get
函数,该函数允许您在未定义所需密钥的情况下提供默认值。这可以防止在使用方括号访问字典元素时可能引发的KeyError
d = {'m1': {'ip': '10.250.10.10', 'port': 6697}, 'm2': {'ip': '10.250.10.20', 'port': 6699}}
a = d.get('m1', {}).get('ip', 'not found')
b = d.get('m2', {}).get('ip', 'not found')
c = d.get('m3', {}).get('ip', 'not found')
print(a)
print(b)
print(c)
此代码获取m1
子字典,将空字典作为默认值传递,然后从该字典中获取ip
值,将'notfound'
作为默认值ip
这样,无论字典的结构如何,每个变量
a
、b
和c
,都会有一些值。请注意,c
的值将是'notfound'
,因为子字典m3
不存在。dict
是内置的,请注意名称阴影
10.250.10.10 10.250.10.20
d = {'m1': {'ip': '10.250.10.10', 'port': 6697}, 'm2': {'ip': '10.250.10.20', 'port': 6699}}
a = d.get('m1', {}).get('ip', 'not found')
b = d.get('m2', {}).get('ip', 'not found')
c = d.get('m3', {}).get('ip', 'not found')
print(a)
print(b)
print(c)