免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2130 | 回复: 2
打印 上一主题 下一主题

初学python关键字参数纠结一个无聊问题~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-08-02 22:46 |只看该作者 |倒序浏览
  1. def init(data):
  2.         data['first']={}
  3.         data['middle']={}
  4.         data["last"]={}

  5. def lookup(data,label,name):
  6.         return data[label].get(name)

  7. def store(data,*full_names):
  8.         for full_name in full_names:
  9.                 names=full_name.split()
  10.                 if len(names)==2:names.insert(1,'')
  11.                 labels=['first','middle','last']
  12.                 for label,name in zip(labels,names):
  13.                         people=lookup(data,label,name)
  14.                         if people:people.append(full_name)
  15.                         else:data[label][name]=[full_name]

  16. d={}
  17. init(d)
复制代码
然后书里面是这么调用store的~
  1. store(d,'luke Skywalker','Anakin Skywalker')
复制代码
于是,我想试试看能否从用户input输入。。。
问题1:但是。。input得到的是一个元组。。怎么才能转换为store需要的格式呢?


另外一个方法就是不用关键字参数,用列表代替。后半部修改为:
  1. def store(data,full_names):
  2.         print(full_names)
  3.         for full_name in full_names:
  4.                 names=full_name.split()
  5.                 if len(names)==2:names.insert(1,'')
  6.                 labels=['first','middle','last']
  7.                 for label,name in zip(labels,names):
  8.                         people=lookup(data,label,name)
  9.                         if people:people.append(full_name)
  10.                         else:data[label][name]=[full_name]

  11. d={}
  12. init(d)
  13. a=input('names:').split(',')
  14. store(d,a)


  15. 有没更好的意见或者对问题1的解答呢?~?~?~?感谢~
  16. print(d)
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-08-03 08:55 |只看该作者
对于问题一,你可以用以下代码调用原来的store
  1. a=input('name:').split(',')

  2. store(d,*a)
复制代码
这里的*自动把元祖/列表展开。

论坛徽章:
0
3 [报告]
发表于 2012-08-04 09:08 |只看该作者
回复 2# Hadron74


    {:3_182:} 。。明白~~对噢。。。谢谢指教~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP