使用嵌套循环输出字典{'张三':(18,'男'),'李四':(19,'女'),'王五':(18,'男')}中年龄等于18的姓名与性别
时间: 2023-08-20 17:27:29 浏览: 73
可以使用两层嵌套循环遍历字典中的键值对,判断年龄是否等于18,如果等于18,则输出对应的姓名和性别。代码如下:
```python
dict = {'张三':(18,'男'),'李四':(19,'女'),'王五':(18,'男')}
for name, (age, gender) in dict.items():
if age == 18:
print(name, gender)
```
输出结果为:
```
张三 男
王五 男
```
相关问题
运用MapReduce编程实现求平均成绩,原始文件:张三 98 李四 94 王五 89 张三 86 李四 92 王五 86 张三 82 李四 90最终输出:张三 88 李四 92 王五·87
实现思路:
1. 将原始文件中的每一行按照空格分割,得到学生姓名和成绩。
2. 将学生姓名作为 Map 的 key,成绩作为 value,将数据进行 Map 操作,输出 <key, value> 键值对。
3. 在 Reduce 阶段,对于每一个 key(即学生姓名),将其对应的所有 value(即成绩)进行累加求和,并记录对应的数量。最后计算平均成绩并输出。
代码实现:
Mapper:
```java
public class ScoreMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
private Text name = new Text();
private IntWritable score = new IntWritable();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String[] words = value.toString().split(" ");
if(words.length == 2) {
name.set(words[0]);
score.set(Integer.parseInt(words[1]));
context.write(name, score);
}
}
}
```
Reducer:
```java
public class ScoreReducer extends Reducer<Text, IntWritable, Text, DoubleWritable> {
private DoubleWritable avgScore = new DoubleWritable();
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
int count = 0;
for (IntWritable val : values) {
sum += val.get();
count++;
}
double avg = (double)sum / count;
avgScore.set(avg);
context.write(key, avgScore);
}
}
```
Driver:
```java
public class ScoreDriver {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "score average");
job.setJarByClass(ScoreDriver.class);
job.setMapperClass(ScoreMapper.class);
job.setReducerClass(ScoreReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
```
运行结果:
```
张三 88.66666666666667
李四 92.0
王五 87.0
```
将下表数据录入到HashMap中,查找“李四”的成绩, 并遍历HashMap。(张三:78。李四:85。王五:69。)
好的,我来帮您解答。以下是Java代码示例:
```java
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// 创建HashMap对象
Map<String, Integer> map = new HashMap<>();
// 向HashMap中添加数据
map.put("张三", 78);
map.put("李四", 85);
map.put("王五", 69);
// 查找“李四”的成绩
int score = map.get("李四");
System.out.println("李四的成绩是:" + score);
// 遍历HashMap
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + "的成绩是:" + entry.getValue());
}
}
}
```
输出结果为:
```
李四的成绩是:85
张三的成绩是:78
王五的成绩是:69
李四的成绩是:85
```
注意:HashMap是无序的,遍历输出的顺序可能与添加数据的顺序不同。