【发布时间】:2021-03-17 20:08:27
【问题描述】:
对于像这样的python字典,
data={
'name':'george',
'isRetired': True,
'organisation': ['ABC','XYZ','MNO'],
}
set 和 get 在这里如何工作?
【问题讨论】:
标签: python linux dictionary scripting set
对于像这样的python字典,
data={
'name':'george',
'isRetired': True,
'organisation': ['ABC','XYZ','MNO'],
}
set 和 get 在这里如何工作?
【问题讨论】:
标签: python linux dictionary scripting set
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,则将参数分解为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}}}
【讨论】: