从嵌套字典中获取特定键的值并将值存储在单独的变量中

我有以下字典:-

    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())

上述解决方案将给您ab为:

>>> a
'10.250.10.10'
>>> b
'10.250.10.20'

在Python 3.7+,字典保持插入的顺序,并且因此的值ab可以预测的。对于旧版本的Python,顺序是任意的和因此值ab无法预测。


如果您使用的是 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()`


以上是从嵌套字典中获取特定键的值并将值存储在单独的变量中的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>