【问题标题】:i want to get specific value in list using python我想使用 python 在列表中获取特定值
【发布时间】:2015-04-29 22:53:51
【问题描述】:
import netifaces as ni
temp=ni.interfaces()
print ni.ifaddresses(temp[0])
for a in ni.ifaddresses(temp[0]).iteritems():
    print a

这是在下面显示:

{-1000: [{'addr': '24:f5:aa:30:ff:ff'}], 2: [{'broadcast': '11.4.9.255', 'netmask': '255.255.255.0', 'addr': '11.4.9.22'}], 23: [{'addr': 'fe80::34cc:afcf:c9d6:e25c%11'}]}
(-1000, [{'addr': '24:f5:aa:30:ff:ff'}])
(2, [{'broadcast': '11.4.9.255', 'netmask': '255.255.255.0', 'addr': '11.4.9.22'}])
(23, [{'addr': 'fe80::34cc:afcf:c9d6:e25c%11'}])

但我只想获得像 24:f5:aa:30:ff:ff 这样的 addr 值

如何使用python获取列表中的特定值?

【问题讨论】:

    标签: python list python-2.7 split


    【解决方案1】:

    我能做到的最好的。

    aux=[{-1000: [{'addr': '24:f5:aa:30:ff:ff'}], 2: [{'broadcast': '11.4.9.255', 'netmask': '255.255.255.0', 'addr': '11.4.9.22'}], 23: [{'addr':'fe80::34cc:afcf:c9d6:e25c%11'}]},
    (-1000, [{'addr': '24:f5:aa:30:ff:ff'}]),
    (2, [{'broadcast': '11.4.9.255', 'netmask': '255.255.255.0', 'addr': '11.4.9.22'}]),
    (23, [{'addr': 'fe80::34cc:afcf:c9d6:e25c%11'}])]
    
    import collections
    
    def my_func(the_val):
            if not isinstance(the_val, collections.Iterable) or isinstance(the_val, str):
                    return
            if isinstance(the_val, dict) and the_val.has_key('addr'):
                    print "------------------->", the_val['addr']
            for e in the_val:
                    if isinstance(the_val, dict):
                            my_func(the_val[e])
                            continue
                    my_func(e)
    
    my_func(aux)
    

    【讨论】:

      【解决方案2】:

      使用索引将相关值获取到您的字典中的addr

      for a in ni.ifaddresses(temp[0]).iteritems():
          print a[1][0]['addr']
      

      【讨论】:

      • 鉴于第一项是不包含 1 键的字典,这不会立即失败吗?
      • 1 是您案例中的第二项列表!然后你可以访问它的第一个元素,即字典。
      • 在这种情况下,第一个a 是一个字典,每个键都是一个数字,每个值都是一个包含单个字典的list。在整个给定数据结构中,没有任何list 的有效索引为1。尝试从问题中给出的输出中创建一个可迭代对象,然后使用循环体对其进行迭代并告诉我它不会给您错误。
      • 第一个a不是字典{-1000: [{'addr': '24:f5:aa:30:ff:ff'}], 2: [{'broadcast': '11.4.9.255', 'netmask': '255.255.255.0', 'addr': '11.4.9.22'}], 23: [{'addr': 'fe80::34cc:afcf:c9d6:e25c%11'}]}吗?
      • 您能否添加一个 MCVE,以便我可以看到您在 print a[1][0]['addr'] 实际工作的地方使用的数据结构?
      猜你喜欢
      • 2022-11-02
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 2021-05-23
      相关资源
      最近更新 更多