首页 > 解决方案 > 设置和获取命令如何在 python 中工作

问题描述

对于像这样的python字典,

data={
       'name':'george',
       'isRetired': True,
       'organisation': ['ABC','XYZ','MNO'],
        
     }

set 和 get 在这里如何工作?

标签: pythonlinuxdictionaryscriptingset

解决方案


while True:
    cmd = input('> ').split()
    if cmd[0] == 'get':
        key = ' '.join(cmd[1:])
        path = key.split('.')
        now = data
        for k in path:
            if k in now:
                now = now[k]
            else:
                print('Error: invalid key')
        print(now)
    elif cmd[0] == 'set':
        key, value = ' '.join(cmd[1:]).split('=')
        path = key.split('.')
        now = data
        for k in path[:-1]:
            if k in now:
                now = now[k]
            else:
                print('Error: invalid key')
        now[path[-1]] = value
    elif cmd[0] == 'quit':  # for debugging purposes
        break
    else:
        print('Error: invalid command')

print(data)

这是一个相当长的程序。它打破了命令。
如果命令是get,则按点分解参数并逐级获取项目。
如果命令是set,则将参数分解为 akey和 a value,按点分解键并找到键,然后设置值。
quit命令用于调试目的。

调试:

> get ABC.positions.lead
3
> get ABC.yearsofService
10
> get name
george
> set ABC.positions.manager=5
> quit
{'name': 'george', 'isRetired': True, 'organisation': ['ABC', 'XYZ', 'MNO'], 'ABC': {'currentlyEmployed': False, 'yearsofService': '10', 'positions': {'executive': '2', 'manager': '5', 'lead': '3', 'ceo': None}}}

推荐阅读