python中map函数字典映射_数据开发_Python中字典和Java映射总结(示例代码)

开发语言

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

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 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

6. size

import java.util.*;

public class TraversalInit {

public static void main(String [] args) {

//创建List 对象

List arrayList = new ArrayList();

arrayList.add("aaa");

arrayList.add("ccc");

arrayList.add("fff");

//01.创建Map对象

Map systemNote = new HashMap<>();

//1.创建Map对象

Map 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 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 {

boolean hasNext();

E next();

void remove();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值