免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: caesarok
打印 上一主题 下一主题

|合并两个字典[增加难度版] [复制链接]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
11 [报告]
发表于 2009-03-11 21:23 |只看该作者

  1. for i in f1.readlines():
  2.     i = i.strip()
  3.     name, tel = i.split(":")
  4.     if name not in r:
  5.             r[name] = [tel,]
  6.     else:
  7.         r[name].append(tel)

  8. for j in f2.readlines():
  9.     j = j.strip()
  10.     name, tel = i.split(":")
  11.     if name not in r:
  12.          r[name] = [tel,]
  13.     else:
  14.          r[name].append(tel)

  15. for k, v in r.items():
  16.     f.write("%s\t%s\n" % (k, '\t'.join(v))
复制代码


简单写两句

论坛徽章:
0
12 [报告]
发表于 2009-03-11 22:41 |只看该作者
1. 从文件里构建两个Dictionary,分别为d1和d2
2. d2.update(d1)
3. Loop d2的keys,利用d1更新手机号码

论坛徽章:
0
13 [报告]
发表于 2009-03-11 22:45 |只看该作者
原帖由 dreamerx2004 于 2009-3-11 22:41 发表
1. 从文件里构建两个Dictionary,分别为d1和d2
2. d2.update(d1)
3. Loop d2的keys,利用d1更新手机号码

看清问题,东东脑子,然后回答。

论坛徽章:
0
14 [报告]
发表于 2009-03-11 22:59 |只看该作者
原帖由 luffy.deng 于 2009-3-11 22:45 发表

看清问题,东东脑子,然后回答。


无知太可怕

论坛徽章:
0
15 [报告]
发表于 2009-03-12 08:37 |只看该作者
原帖由 dreamerx2004 于 2009-3-11 22:59 发表


无知太可怕


都懒得说你,
1. 从文件里构建两个Dictionary,分别为d1和d2
2. d2.update(d1)

还构建两个字典,你写看看吧。

论坛徽章:
0
16 [报告]
发表于 2009-03-12 11:41 |只看该作者
原帖由 luffy.deng 于 2009-3-12 08:37 发表


都懒得说你,
还构建两个字典,你写看看吧。


装B王再次出现

[ 本帖最后由 dreamerx2004 于 2009-3-12 11:45 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2009-03-12 12:01 |只看该作者
原帖由 dreamerx2004 于 2009-3-12 11:41 发表


装B王再次出现

2个字典update的唯一结果 就是 2个字典中 同key 的value都相等了
那么相异的value都被clear掉了 题目是
key1 = value1 ,value2

你不管怎么update d1和d2,其中一个值肯定没了 还怎么达成题目啊

论坛徽章:
0
18 [报告]
发表于 2009-03-12 13:46 |只看该作者
原帖由 zhenglxd 于 2009-3-12 12:01 发表

2个字典update的唯一结果 就是 2个字典中 同key 的value都相等了
那么相异的value都被clear掉了 题目是
key1 = value1 ,value2

你不管怎么update d1和d2,其中一个值肯定没了 还怎么达成题目啊



这个仁兄还算是一个为讨论问题而来的~
是这样的,d2.update(d1)以后d2确实发生了变化,你说的一点都没错:
1.相同key的值被d1的value取代;
2.在d1中没有key的有d2原有value取代;
3.d1有,但d2中没有的key直接取d1的value。

反过来请你看看题目和楼主要求的输出,不正是这个要求吗?只是相差了一步而已:利用已经保存的d2(update之前的d2)去更新“手机”的值

论坛徽章:
0
19 [报告]
发表于 2009-03-12 14:15 |只看该作者
原帖由 dreamerx2004 于 2009-3-12 13:46 发表



这个仁兄还算是一个为讨论问题而来的~
是这样的,d2.update(d1)以后d2确实发生了变化,你说的一点都没错:
1.相同key的值被d1的value取代;
2.在d1中没有key的有d2原有value取代;
3.d1有,但d2中没 ...

你长眼睛了没有?还是智商有问题?不得不再次指出你是个傻B。

[ 本帖最后由 luffy.deng 于 2009-3-12 14:18 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2009-03-12 14:47 |只看该作者
原帖由 dreamerx2004 于 2009-3-12 13:46 发表



这个仁兄还算是一个为讨论问题而来的~
是这样的,d2.update(d1)以后d2确实发生了变化,你说的一点都没错:
1.相同key的值被d1的value取代;
2.在d1中没有key的有d2原有value取代;
3.d1有,但d2中没 ...


我对你的描述的理解是这样的
d2.update(d1)
形成了一个 new d2

然后从文件重新读取 old d2

因为newd2 和 old d2 也是拥有相同的key 不同的value所以不能update的


如果你因为描述的关系想表达的是

for i in newd2.keys():
     if i in oldd2.keys():
          newd2=i+' '+oldd2

那就完全没有必要了

或者你亲自写个代码让我们学习下吧
或者你把楼主的题目在仔细看一遍
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP