gpt4 book ai didi

python - 如何以漂亮的方式显示包含词典的列表?

转载 作者:行者123 更新时间:2023-12-01 06:54:14 25 4
gpt4 key购买 nike

我有一个函数可以将 Linux 上的 multipath.conf 解析为嵌套字典,字典如下所示:

[{'blacklist': [{'devnode': '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'}, {'devnode': '"^hd[a-z][[0-9]*]"'}, {'devnode': '"^cciss!c[0-9]d[0-9]*"'}]}, {'defaults': [{'user_friendly_names': 'yes'}]}, {'defaults': [{'udev_dir': '/dev'}, {'polling_interval': '10'}, {'selector': '"round-robin 0"'}, {'path_grouping_policy': 'multibus'}, {'getuid_callout': '"/sbin/scsi_id -g -u -s /block/%n"'}, {'prio_callout': 'none'}, {'path_checker': 'readsector0'}, {'rr_min_io': '100'}, {'max_fds': '8192'}, {'rr_weight': 'priorities'}, {'failback': 'immediate'}, {'no_path_retry': 'fail'}, {'user_friendly_names': 'yes'}]}, {'blacklist': [{'wwid': '26353900f02796769'}, {'devnode': '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'}, {'devnode': '"^hd[a-z]"'}]}, {'devices': [{'device': [{'vendor': '"COMPAQ "'}, {'product': '"HSV110 (C)COMPAQ"'}, {'path_grouping_policy': 'multibus'}, {'getuid_callout': '"/sbin/scsi_id -g -u -s /block/%n"'}, {'path_checker': 'readsector0'}, {'path_selector': '"round-robin 0"'}, {'hardware_handler': '"0"'}, {'failback': '15'}, {'rr_weight': 'priorities'}, {'no_path_retry': 'queue'}]}, {'device': [{'vendor': '"COMPAQ "'}, {'product': '"MSA1000 "'}, {'path_grouping_policy': 'multibus'}]}]}]

我需要以“漂亮的格式”再次将其取出,如下所示:

devices {
device {
vendor "COMPAQ "
product "HSV110 (C)COMPAQ"
path_grouping_policy multibus
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
path_checker readsector0
path_selector "round-robin 0"
hardware_handler "0"
failback 15
rr_weight priorities
no_path_retry queue
}
device {
vendor "COMPAQ "
product "MSA1000 "
path_grouping_policy multibus
}
}
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*"
}
and so on the order does not really matter... but the indentations are important to have some

我尝试过使用递归函数来“很好地”打印它,但问题是它是嵌套的......知道如何打印这本字典吗?

最佳答案

您可以使用pprint :

import pprint
a = [{'blacklist': [{'devnode': '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'}, {'devnode': '"^hd[a-z][[0-9]*]"'}, {'devnode': '"^cciss!c[0-9]d[0-9]*"'}]}, {'defaults': [{'user_friendly_names': 'yes'}]}, {'defaults': [{'udev_dir': '/dev'}, {'polling_interval': '10'}, {'selector': '"round-robin 0"'}, {'path_grouping_policy': 'multibus'}, {'getuid_callout': '"/sbin/scsi_id -g -u -s /block/%n"'}, {'prio_callout': 'none'}, {'path_checker': 'readsector0'}, {'rr_min_io': '100'}, {'max_fds': '8192'}, {'rr_weight': 'priorities'}, {'failback': 'immediate'}, {'no_path_retry': 'fail'}, {'user_friendly_names': 'yes'}]}, {'blacklist': [{'wwid': '26353900f02796769'}, {'devnode': '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'}, {'devnode': '"^hd[a-z]"'}]}, {'devices': [{'device': [{'vendor': '"COMPAQ "'}, {'product': '"HSV110 (C)COMPAQ"'}, {'path_grouping_policy': 'multibus'}, {'getuid_callout': '"/sbin/scsi_id -g -u -s /block/%n"'}, {'path_checker': 'readsector0'}, {'path_selector': '"round-robin 0"'}, {'hardware_handler': '"0"'}, {'failback': '15'}, {'rr_weight': 'priorities'}, {'no_path_retry': 'queue'}]}, {'device': [{'vendor': '"COMPAQ "'}, {'product': '"MSA1000 "'}, {'path_grouping_policy': 'multibus'}]}]}]
pprint.pprint(a)

给出输出:

[{'blacklist': [{'devnode': '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'},
{'devnode': '"^hd[a-z][[0-9]*]"'},
{'devnode': '"^cciss!c[0-9]d[0-9]*"'}]},
{'defaults': [{'user_friendly_names': 'yes'}]},
{'defaults': [{'udev_dir': '/dev'},
{'polling_interval': '10'},
{'selector': '"round-robin 0"'},
{'path_grouping_policy': 'multibus'},
{'getuid_callout': '"/sbin/scsi_id -g -u -s /block/%n"'},
{'prio_callout': 'none'},
{'path_checker': 'readsector0'},
{'rr_min_io': '100'},
{'max_fds': '8192'},
{'rr_weight': 'priorities'},
{'failback': 'immediate'},
{'no_path_retry': 'fail'},
{'user_friendly_names': 'yes'}]},
{'blacklist': [{'wwid': '26353900f02796769'},
{'devnode': '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'},
{'devnode': '"^hd[a-z]"'}]},
{'devices': [{'device': [{'vendor': '"COMPAQ "'},
{'product': '"HSV110 (C)COMPAQ"'},
{'path_grouping_policy': 'multibus'},
{'getuid_callout': '"/sbin/scsi_id -g -u -s '
'/block/%n"'},
{'path_checker': 'readsector0'},
{'path_selector': '"round-robin 0"'},
{'hardware_handler': '"0"'},
{'failback': '15'},
{'rr_weight': 'priorities'},
{'no_path_retry': 'queue'}]},
{'device': [{'vendor': '"COMPAQ "'},
{'product': '"MSA1000 "'},
{'path_grouping_policy': 'multibus'}]}]}]

或者,您可以使用 YAML :

import yaml
print(yaml.dump(a))

输出:

- blacklist:
- devnode: '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'
- devnode: '"^hd[a-z][[0-9]*]"'
- devnode: '"^cciss!c[0-9]d[0-9]*"'
- defaults:
- user_friendly_names: 'yes'
- defaults:
- udev_dir: /dev
- polling_interval: '10'
- selector: '"round-robin 0"'
- path_grouping_policy: multibus
- getuid_callout: '"/sbin/scsi_id -g -u -s /block/%n"'
- prio_callout: none
- path_checker: readsector0
- rr_min_io: '100'
- max_fds: '8192'
- rr_weight: priorities
- failback: immediate
- no_path_retry: fail
- user_friendly_names: 'yes'
- blacklist:
- wwid: 26353900f02796769
- devnode: '"^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"'
- devnode: '"^hd[a-z]"'
- devices:
- device:
- vendor: '"COMPAQ "'
- product: '"HSV110 (C)COMPAQ"'
- path_grouping_policy: multibus
- getuid_callout: '"/sbin/scsi_id -g -u -s /block/%n"'
- path_checker: readsector0
- path_selector: '"round-robin 0"'
- hardware_handler: '"0"'
- failback: '15'
- rr_weight: priorities
- no_path_retry: queue
- device:
- vendor: '"COMPAQ "'
- product: '"MSA1000 "'
- path_grouping_policy: multibus

关于python - 如何以漂亮的方式显示包含词典的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58879944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com