【问题标题】:'for loop' python 3 dictionaries inside dictionaries from .plist (or xml)来自.plist(或xml)的字典中的'for loop'python 3字典
【发布时间】:2012-01-17 00:24:41
【问题描述】:

希望这里有一个快速的 Python 问题...

import plistlib

pl = plistlib.readPlist('/Users/name/Documents/some.plist')

print(pl[0]['keyA'] , pl[0]['keyD'] , pl[0]['keyG'])

我将如何编写一个 for 循环或一个列表函数来循环遍历字典,将值打印到某些键。

主字典将包含 30 个条目(字典中的字典),每个条目包含大约 40 个键。)

例子:

print(pl[0]['keyA'] , pl[0]['keyD'] , pl[0]['keyG'])
print(pl[1]['keyA'] , pl[1]['keyD'] , pl[1]['keyG'])
print(pl[2]['keyA'] , pl[2]['keyD'] , pl[2]['keyG'])
print(pl[n]['keyA'] , pl[n]['keyD'] , pl[n]['keyG'])

其中pl 是主字典,然后0 - n 指字典中的字典。

我希望这是有道理的

【问题讨论】:

    标签: python dictionary for-loop


    【解决方案1】:

    就写吧! :p

    for sub_dict in pl.values():
        print sub_dict['keyA'], sub_dict['keyD'], sub_dict['keyG']
    

    (.values() 表示迭代字典的值,因为通常迭代字典会通过其键。在 Python 2 中使用 .itervalues()。)

    【讨论】:

    • File "plistread.py", line 6 print sub_dict['NOISE'], sub_dict['SSID_STR'], sub_dict['BSSID'] ^ SyntaxError: invalid syntax
    • Traceback (most recent call last): File "plistread.py", line 5, in <module> for sub_dict in pl.values(): AttributeError: 'list' object has no attribute 'values'
    • 如果它显示'list' object has no attribute 'values' 那么'list' 对象没有'values' 属性!问题是外部数据结构是列表而不是字典。要遍历列表,您只需编写 for sub_dict in pl:。
    • @user969617 您使用的是 Python 3,所以您当然必须使用 print 作为函数。
    【解决方案2】:

    你的问题与plist无关,它与嵌套字典有关。

    从您写的内容看来,您的 pl 字典看起来像:

    pl = {0: {'keyA': 1, 'keyD': 2, 'keyG': 3}, 
          1: {'keyA': 11, 'keyD': 12, 'keyG': 13}}
    

    在这种情况下,只需使用:

    keys = ['keyA', 'keyD', 'keyG']
    for i in range(len(pl)):
        print(' '.join(str(pl[i][key]) for key in keys)
    

    如果所有你的pl键是数字,这将起作用,否则你可能想使用.items()或.values(),看看official dict documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 2014-02-21
      相关资源
      最近更新 更多