动态字典迭代工具,允许您使用单键声明设置和检索值

keymapper的Python项目详细描述


键映射器

keymapper是dictionary类的一个子类,它允许您:

  • 动态分配键和值
  • 选择所需的分隔符(默认为点号:.)
  • 访问单个键声明中的所有键和值,而不考虑类型(list、tuple、set)
  • 默认情况下被视为dict类型
  • 初始化空字典,或在类声明
  • 上接受现有的DICT
  • 非常适合键迭代和循环
  • keymapper功能不是强加给您的

安装

  • 您可以通过pypi安装:

      pip install keymapper
    
  • 或者,在软件包未归档后在本地安装:

      pip install -e /destination
    

示例

标准dict:

fromkeymapperimportKeyMapperkm_dict=KeyMapper()print(km_dict)# Prints: {} km_dict['key1']='All the keys!'print(km_dict)# Prints: {'key1': 'All the keys!'}

嵌套dict:

fromkeymapperimportKeyMappermy_dict={'messages':{'message_1':'Hey there!'}}km_dict=KeyMapper(my_dict)# Standardprint(km_dict['messages']['message_1'])# Prints: 'Hey there!'# KeyMapperprint(km_dict['messages.message_1'])# Prints: 'Hey there!'

dict与iterables:

fromkeymapperimportKeyMappermy_dict={'messages':{'message_1':'Hey there!'},'objects':[{'obj1':'Hi!'},{'obj2':'There!'},{'obj3':'Peoples!'}]}km_dict=KeyMapper(my_dict)# Standardprint(km_dict['objects'][1]['obj2'])# Prints: 'There!'# KeyMapper - does not care what type of iterableprint(km_dict['objects.1.obj2'])# Prints: 'There!'print(km_dict['objects.1.obj2'])# Prints: 'There!'print(km_dict['objects.1.obj2'])# Prints: 'There!'# Or don't even declare the data typeprint(km_dict['objects.1.obj2'])# Prints: 'There!'

dict和不同的delimier:

fromkeymapperimportKeyMappermy_dict={'messages':{'message_1':'Hey there!'},'objects':[{'obj1':'Hi!'},{'obj2':'There!'},{'obj3':'Peoples!'}]}km_dict=KeyMapper(my_dict,delimiter=',')# Standardprint(km_dict['messages']['message_1'])# Prints: 'Hey there!'# KeyMapper with new delimeterprint(km_dict['messages,message_1'])# Prints: 'Hey there!'

示例

fromkeymapperimportKeyMapperquestions=['What is your name: ','What is your email: ','What is your password: ','How many servers do you want to add: ','What is the ip: ','What is the port: ']keys=['user.name','user.email','user.password','servers']config={'user':{'name':'','email':'','password':''},'servers':[]}km_dict=KeyMapper(config)foriinrange(len(questions)):ifi<3:km_dict[keys[i]]=input(questions[i])else:forrinrange(int(input(questions[i]))):server_info={'ip':'','port':''}fori,kinenumerate(questions[4:]):ifi<1:server_info['ip']=input(k)else:server_info['port']=input(k)km_dict[keys[len(keys)-1]].append(server_info)breakprint(km_dict)# Prints: ... Well, whatever you entered as your input values! Try it if you don't believe me ;)foriinrange(len(km_dict['servers'])):print(km_dict['servers.{}.ip'.format(i)])# Prints the IP for each index iterated through

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用“this”关键字调用类中具有1个以上参数的多个构造?   java中轮廓的opencv并集   java Qt软件包安卓。支持v4。应用程序不存在   java JPA:如何将字符串持久化到数据库字段中,键入MYSQL文本   java扫雷器随机生成地雷算法不正确   ApacheStorm中的java并行性和告诉主管该怎么做   jvm或AWS S3端的java Max文件上载限制   java Spring安全OAuth2在成功登录后重定向到登录   当我运行jframe时,它总是显示“java.lang.NumberFormatException:空字符串”   java返回Spring MVC Post请求的JSON响应   java用户登录和密码:数据库确认   安卓的问题。getToken()java。木卫一。IOException:无效的\u目标\u版本   从Android连接到IBM Watson对话API时发生java未知模式字符“X”异常   java我们可以在春季会话超时之前设置条件吗?   java理解@MockBean与“RestTemplate RestTemplate”的用法