• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

在python制作电话簿:我想通过固定我当前的代码

python 来源:JOONHYUK SHIN 3次浏览

我做我喜欢的代码下面让这个屏幕….在python制作电话簿:我想通过固定我当前的代码

但正如我输入的数据,如垃圾邮件&号,以前的数据将被删除。

所以我想做出一个键多个值… (我认为使用名单还挺好的方法)

例如,

重点:垃圾邮件 – 价值:01,01099991234 ,

重点:垃圾邮件 – 价值:01032938962,01023421232,01023124242

enter image description here

我ñ总之,我希望得到这个打印(附图片)

这是我的代码:

enter code here 
phonebook = dict() 
ntype = ['spam', 'friend', 'family', 'etc'] 
trash =[] 
spam = [] 
friend = [] 
family = [] 
etc = [] 
while True: 
    a = input("Input your number and ntype : ") 
    b = a.split() 
    i = 0 
    j = 0 
    if a == 'exit': 
     print("end program") 
     break 
     exit() 
    elif a == "print spam": 
     print("*** spam numbers: ") 
     print('*', phonebook['spam']) 
    elif a == "print numbers": 
     print("*** numbers:") 
    for t in ntype: 
     try: 
      print("**", t) 
      print('*',phonebook[t]) 
     except KeyError: 
      continue 
    print("** trash") 
    print("*", phonebook['trash']) 
else: 
    while True: 
     try: 
      if ntype[j] in b: 
       for k in b: 
        if list(k)[0] == '0' and len(k) >= 10 and len(k) <= 11: 
         if k in phonebook.values(): 
          print("Already Registered") 
         else: 
          phonebook[ntype[j]] = k 
          print(phonebook) 
       break 
      else: 
       j+=1 
     except IndexError: 
      if list(b[i])[0] == '0' and len(b[i]) >= 10 and len(b[i]) <= 11: 
       if b[i] in phonebook.values(): 
        print("Already Registered") 
       else: 
        phonebook['trash'] = b[i] 
        print(phonebook) 
       break 
      else: 
       break 


===========解决方案如下:

您应该使用名单这一点。问题是你不能附加到尚未设置的值。

>>> d = {} 
>>> d['a'].append('value') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
KeyError: 'a' 

而且,正如你所看到的,在相同的密钥分配多次不会做的伎俩。

>>> d = {} 
>>> d['a'] = 'value1' 
>>> d['a'] = 'value2' 
>>> d 
{'a': 'value2'} 

因此,为了使其工作,你可以初始化一个空清单中所有可能的密钥:

>>> d = {} 
>>> possible_keys = ['a', 'b'] 
>>> for k in possible_keys: 
...  d[k] = [] 
... 
>>> d['a'].append('value1') 
>>> d['a'].append('value2') 
>>> d['b'].append('value3') 
>>> d['b'].append('value4') 
>>> d 
{'b': ['value3', 'value4'], 'a': ['value1', 'value2']} 

这工作,但它只是很累。初始化类型的字典是一件很常见的情况,这样的方法加入dict添加一个默认值,如果它尚未设置:

>>> d = {} 
>>> d.setdefault('a', []).append('value1') 
>>> d.setdefault('a', []).append('value2') 
>>> d.setdefault('b', []).append('value3') 
>>> d.setdefault('b', []).append('value4') 
>>> d 
{'b': ['value3', 'value4'], 'a': ['value1', 'value2']} 

但话又说回来,你必须记住每次调用setdefault。要解决这个问题,默认库提供defaultdict

>>> from collections import defaultdict 
>>> d = defaultdict(list) 
>>> d['a'].append('value1') 
>>> d['a'].append('value2') 
>>> d['b'].append('value3') 
>>> d['b'].append('value4') 
>>> d['a'] 
['value1', 'value2'] 
>>> d['b'] 
['value3', 'value4'] 

这可能就是你需要的。

希望我能帮上忙。 ;)


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)