己知在线的时间>=90分钟的为发烧级网虫 否则是普通网虫。以下程序中的namelist为网 名和一天内玩网游的时间 (分钟)组成的多个 键值对构成的字典。通过对时间的判断,将字 典中发烧级网虫和普通网虫分离成两个字典, 分别输输出他们的网名和一天内玩网游的时间
时间: 2023-05-15 07:06:31 浏览: 185
以下是可以用来分离发烧级网虫和普通网虫的 Python 代码:
```python
namelist = {
"Alice": 120,
"Bob": 60,
"Charlie": 180,
"David": 30,
"Eve": 90
}
feverish = {}
normal = {}
for name, time in namelist.items():
if time >= 90:
feverish[name] = time
else:
normal[name] = time
print("发烧级网虫:")
for name, time in feverish.items():
print(name, time)
print("普通网虫:")
for name, time in normal.items():
print(name, time)
```
这段代码会将 namelist 中的每个键值对遍历一遍,如果时间大于等于 90 分钟,则将该键值对加入 feverish 字典中,否则加入 normal 字典中。最后分别输出两个字典中的网名和时间。
相关问题
补全程序,完成以下功能。已知在线的时间>=90分钟的为发烧级网虫,否则是普通网虫。以下程序中的namelist为网名和一天内玩网游的时间(分钟)组成的多个键值对构成的字典。通过对时间的判断,将字典中发烧级网虫和普通网虫分离成两个字典,分别输出他们的网名和一天内玩网游的时间。 nameList = {'草肥熊': 65, '黄小丫': 52, '大黄鸭': 102, '胳膊粗': 89, '腿脚细': 90, '水蛇腰': 116, '水桶腰': 53} # 网名和时间字典 noPass = {} # 普通网虫字典初始化 Pass = {} # 发烧级网虫字典初始化 for name, onlineTime in nameList. 【1】 # 遍历名单的键值对 if onlineTime < 【2】 : noPass[_ 【3】 ] = onlineTime # 添加普通网虫到普通字典 else: Pass[name] = 【4】 # 添加发烧级网虫到发烧字典 print('发烧级网虫:') for name, onlineTime in Pass.items(): # 遍历发烧级网虫的键值对 print(name, 【5】 ) print('\n普通网虫:') for name in noPass.keys(): print(name, 【6】 ) # 通过网名输出网名和成绩
timeList1 = {} # 存储发烧级网虫的网名和时间
timeList2 = {} # 存储普通网虫的网名和时间
for name, time in nameList.items():
if time >= 90:
timeList1[name] = time
else:
timeList2[name] = time
print("发烧级网虫:")
for name, time in timeList1.items():
print(name, time)
print("普通网虫:")
for name, time in timeList2.items():
print(name, time)
List<String> nameList = new ArrayList<>(); List<Entity> rsList = new ArrayList<>(); List<List<String>> valueList = new ArrayList<>(); for (Entity e : rsList) { List<String> singleRecord = new ArrayList<>(); nameList.forEach(n -> singleRecord.add(e.get(n) == null ? "" : e.get(n).toString())); if (e.getMetadata().containsKey(ChargeConst.RATE_RULE_DETAIL)) { Set<Map<String, Object>> ruleDtls = (Set<Map<String, Object>>) e.getMetadata().get(ChargeConst.RATE_RULE_DETAIL); Map<String, Object> mergedMap = ruleDtls.stream().flatMap(map -> map.entrySet().stream()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> newValue)); singleRecord = IntStream.range(0, singleRecord.size()) .mapToObj(i -> singleRecord.get(i).equals("") && mergedMap.get(nameList.get(i)) != null ? mergedMap.get(nameList.get(i)).toString() : singleRecord.get(i)) .collect(Collectors.toList()); } valueList.add(singleRecord); } if (e.getMetadata().containsKey(ChargeConst.RATE_RULE_DETAIL)) { Set<Map<String, Object>> ruleDtls = (Set<Map<String, Object>>) e.getMetadata().get(ChargeConst.RATE_RULE_DETAIL); Map<String, Object> mergedMap = ruleDtls.stream().flatMap(map -> map.entrySet().stream()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> newValue)); System.err.println(); } 错误:Local variable singleRecord defined in an enclosing scope must be final or effectively final
这个错误是因为在lambda表达式中使用了`singleRecord`这个变量,而且它不是final或者effective final的。为了解决这个问题,你可以将`singleRecord`声明为final,或者使用一个新的列表来存储在lambda表达式中需要使用的值,而不是直接引用`singleRecord`。例如:
```
final List<String> finalSingleRecord = singleRecord;
valueList.add(IntStream.range(0, finalSingleRecord.size())
.mapToObj(i -> finalSingleRecord.get(i).equals("") && mergedMap.get(nameList.get(i)) != null ? mergedMap.get(nameList.get(i)).toString() : finalSingleRecord.get(i))
.collect(Collectors.toList()));
```
或者
```
List<String> newSingleRecord = IntStream.range(0, singleRecord.size())
.mapToObj(i -> singleRecord.get(i).equals("") && mergedMap.get(nameList.get(i)) != null ? mergedMap.get(nameList.get(i)).toString() : singleRecord.get(i))
.collect(Collectors.toList());
valueList.add(newSingleRecord);
```
阅读全文