python 中的设置和获取命令如何工作
How does set and get commands work in python
对于 python 这样的字典,
data={
'name':'george',
'isRetired': True,
'organisation': ['ABC','XYZ','MNO'],
}
此处的 set 和 get 是如何工作的?
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
,则将参数逐点分解,逐级得到item。
如果命令是set
,那么把参数分解成一个key
和一个value
,把key按点分解找到key,然后设置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}}}
对于 python 这样的字典,
data={
'name':'george',
'isRetired': True,
'organisation': ['ABC','XYZ','MNO'],
}
此处的 set 和 get 是如何工作的?
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
,则将参数逐点分解,逐级得到item。
如果命令是set
,那么把参数分解成一个key
和一个value
,把key按点分解找到key,然后设置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}}}