作者adrianshum (Alien)
看板Python
标题Re: [问题] 多栏位去除重复元素方式?(求思路)
时间Tue Feb 26 13:18:53 2019
类似
result={ c.tel : c for c in company_list}.values()
应该就行了。
{ ... } 这个是 dict comprehension. 里面做的
简单来说就是用你原本的 list,建一个 dict.
Key 是用 每个 element 的 tel field, Value 则
是element 本身(你的 company)
有重覆的key 的话,後来的会覆盖掉之前的值。
.values() 就是从上面那个 dict 取得所有值。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.130.130.217
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1551158335.A.C00.html
1F:推 cutekid: 推(Y) 02/26 13:27
2F:推 nini200: 覆盖的意思是指 用个for回圈去判tel有无重复 无则储存 02/27 04:14
3F:→ nini200: 吗? 02/27 04:14
4F:→ nini200: 然後发现奇怪的事 tel在dict的value 竟然无法比对 key可 02/27 04:16
5F:→ adrianshum: 覆盖的意思是指 comprehension 出现同key 的情况。建 02/27 09:39
6F:→ adrianshum: 议先去读一读 Dict comprehension 的教学 02/27 09:39
7F:→ adrianshum: 不需再加什麽for loop 比对了。 02/27 09:40
8F:推 nini200: 刚去官方爬文了大概知道用字典去除电话重复 但那语法一 02/27 16:49
9F:→ nini200: 直写不正确 02/27 16:50
10F:→ nini200: a={'公司':'123456','公司1':'123456','公司3':'123456'} 02/27 16:50
11F:→ nini200: 语法要怎麽写呢 02/27 16:51
12F:推 nini200: print({[(c,a.values()) for c in a ]}.values) 02/27 16:57
13F:→ nini200: 我写成这样就报错了 02/27 16:57
14F:→ adrianshum: { v:k for (k,v) in a.items() } 之类? 02/27 23:08
15F:推 lemon651: 如果你知道怎麽存成字典的话,为何不电话当成key就好了 02/28 16:04
16F:→ lemon651: 呢?如果有重复出现覆盖或略过即可 02/28 16:04
17F:→ adrianshum: 楼上:我做的正是你在说的事呀。 03/01 08:36
18F:推 nini200: 哇 解决 感谢以上各位前辈 03/02 08:12