从嵌套字典中获取特定键的值并将值存储在单独的变量中
我有以下字典:-
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())
这是使用和作为实现此目的的功能方法:map()operator.itemgetter()
from operator import itemgetter
a, b = map(itemgetter('ip'), my_dict.values())
上述解决方案将给您a和b为:
>>> a
'10.250.10.10'
>>> b
'10.250.10.20'
在Python 3.7+,字典保持插入的顺序,并且因此的值a和b可以预测的。对于旧版本的Python,顺序是任意的和因此值a和b无法预测。
如果您使用的是 Python 3.6 或更低版本,并且顺序对您很重要,您可以使用对字典键进行排序sorted(),并根据键的排序顺序获取值:
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}]
现在,您可以使用sort_dict_values(而不是my_dict.values()) 来执行较早的操作,以根据您想要的行为获取 和 的'ip'保留值。例如:ab
a, b = map(itemgetter('ip'), sort_dict_values)
# ^ instead of `my_dict.values()`