python - 设置和获取命令如何在 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
,则按点分解参数并逐级获取项目。
如果命令是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}}}
推荐阅读
- r - finding each pattern ina set of sequences
- python - Numpy generate X random binary numbers with a define threshold in 1 line
- android - ArCore - 在会话上下文中创建锚点
- sql-server - 未使用表的索引碎片是否增加?
- prolog - Prolog:返回变量,检查变量是否属于某种类型?
- ios - Swift Sprite-Kit - 如何添加通知
- anychart - AnyChart - 填充库存图表缺少数据点
- php - 必须定义参数“id”
- c# - 单击按钮上的 Xamarin.Forms 动画(Flash 背景)
- java - 结合休眠使用四分之一功能