码迷,mamicode.com
首页 > 编程语言 > 详细

数据开发_Python中字典和Java映射总结

时间:2020-11-04 17:43:30      阅读:15      评论:0      收藏:0      [点我收藏+]

标签:指定   流程   清空   port   none   技巧   rgs   rem   empty   

开发语言

通过对比不同开发语言的特性,了解各个语言的特质以及共通之处,有效和适当的采用相应的开发语言和开发技巧

Python

基本内容: 键不可重复且必须是可hash的 凡是可变对象都不可以做字典的key
 1.定义  dict()  或者 {}
 2. keys values() items()
 3. []  get   字典的pop方法  
      新的索引键并为其赋值,可以将项目添加到字典中。一对中括号紧跟在字典后面,中括号里写key,等号右侧写value
	  pop() 方法删除具有指定键名的项: popitem() 方法删除最后插入的项目(在 3.7 之前的版本中,删除随机项目)
	  clear() 关键字清空字典:
	  setdefault()	返回指定键的值。如果该键不存在,则插入具有指定值的键。
	  update()	使用指定的键值对字典进行更新
 4.遍历 for sigle_example in dict_example:
 5. multidict
     想要一个键映射多个值,将这多个值放到另外的容器中, 比如列表或者集合里面
	   d = {‘a‘: [1, 2, 3]}
       # 列表和元组的组合
       pairs = [("a", ‘Spring‘), (1, ‘Summer‘), (1, ‘Fall‘), (3, ‘Winter‘)]
       for key, value in pairs:
           if key not in d:
               d[key] = []
           d[key].append(value)
       print(d)

	 另外的写法
	   pairs = [("a", ‘Spring‘), (1, ‘Summer‘), (1, ‘Fall‘), (3, ‘Winter‘)]
       f_dict = dict()
       for key_cd, value_cd in pairs:
           data = f_dict.get(key_cd)
           if data is None:
               f_dict[key_cd] = []
           f_dict[key_cd].append(value_cd)
       print("$##########",f_dict)
 6.内置函数: 
   len() 
   del score_dict[‘示例‘]  del 关键字删除具有指定键名的项目: del 关键字也可以完全删除字典:
   in 或者not in 成员操作符
   内建函数 next(iterator)
 7 迭代器  Python里的迭代器并没有提供类似has_next()  Python的做法有一些利用异常进行流程控制的嫌疑
   Python专门将关键字for用作了迭代器的语法糖
	  s = {‘one‘:1,‘two‘:2,‘three‘:3}
      m = iter(s)
      while True:
          try:
              print (next(m))
          except StopIteration:
            print("##")
            break  
	 内置了一个模块itertools

Java

  1.定义: HashMap TreeMap LinkedHashMap
2. keySet  values  entrySet
3. put get remove  
4.遍历 
	  01.for循环的形式
     for (Entry<String, String> entry : map.entrySet()) {}
  02.Iterator 迭代器的形式
       Iterator iter = map.entrySet().iterator();
       while (iter.hasNext()) {
       Map.Entry entry = (Map.Entry) iter.next();
          Object key = entry.getKey();
	   }
5.Map<String, Instance>
6. size 
   import java.util.*;
   public class TraversalInit {
       public static void main(String [] args) { 
           //创建List 对象
           List<String> arrayList = new ArrayList<String>();
           arrayList.add("aaa");
           arrayList.add("ccc");
           arrayList.add("fff");
           //01.创建Map对象
           Map<String, String> systemNote = new HashMap<>();
           //1.创建Map对象
           Map<String, String> TestMap  = new HashMap<>();
           if (arrayList != null && !arrayList.isEmpty()) {
               for (String row : arrayList) {
                   // 02. 使用get获取数据然后判断是否是null值
                   // get()方法的返回值为null时,可能有两种情况,一种是在集合中没有该键对象,
                   // 另一种是该键对象没有映射任何值对象,即值对象为null
                   String dataNote = systemNote.get(row);
                   if (dataNote == null) {
                       dataNote = "aaaa";
                       // 03. null值情况下,添加数据
                       systemNote.put(row, dataNote);
                   }
                 // 2. 使用 containsKey 判断是否是包含
                   if (!TestMap.containsKey(row)) {
                       // 3. 不在内的情况下,添加数据
                       TestMap.put(row, "bcdfg");
                   }
                   //04.循环结束,初始化完成
               }
           }
           // 遍历的两种方式 1.for循环的形式
           for (Map.Entry<String, String> entry : systemNote.entrySet()) {
               System.out.println(entry.getKey()+": " +entry.getValue());
           }
           // 遍历的两种方式 2.迭代器的形式
           Iterator iter = TestMap.entrySet().iterator();
           while (iter.hasNext()) {
               Map.Entry entry = (Map.Entry) iter.next();
               System.out.println(entry.getKey()+"## " +entry.getValue());
           }
   
       }
   }

  7.注意: java的HashMap的key为对象 key是自定义类
    HashMap就是通过对象的= hashCode() 和 equals 判定是否为同一个key,重写这两个方法
   
 8.源码:
  java.util.Iterator;    
  package java.util;  
  public interface Iterator<E> {  
      boolean hasNext();  
      E next();  
      void remove();  
      }

数据开发_Python中字典和Java映射总结

标签:指定   流程   清空   port   none   技巧   rgs   rem   empty   

原文地址:https://www.cnblogs.com/ytwang/p/13919482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!