python - 从字典中过滤偶数和奇数值并将这些偶数和奇数值添加到列表中并将它们写入 txt 文件
问题描述
代码:
def even_odd_split(Dic1):
even = []
odd = []
for sublist in Dic1.values():
for x in sublist:
if x % 2 == 0:
even.append(x)
else:
odd.append(x)
return even, odd
Dic1 = {"N1": [1, 3, 7, 6, 10],
"N2": [2, 3, 9, 10, 21, 36],
"N3": [4, 6, 5, 12, 24, 35],
"N4": [0, 3, 14, 15, 16, 18]
}
print('Even items: %s\nOdd items%s' % even_odd_split(Dic1))
with open("odd.txt","w") as f:
f.write(str(odd))
with open("even.txt","w") as f:
f.write(str(even))
错误:未定义名称“奇数”
是否因为它在列表中为空而未找到,但我添加了偶数和奇数。我不明白你为什么给出这样的错误。我该如何解决错误?
解决方案
变量有一个范围。如果它们在方法中,则在方法完成后变量就消失了。这就是为什么你的return
东西。
在调用方法的地方,您可以将方法的结果分配给新变量。
由于您返回一个元组,因此您可以在分配中有 2 个变量:
x, y = even_odd_split(Dic1)
或者,如果您想再次使用相同的名称
even, odd = even_odd_split(Dic1)
这是完整的代码。仔细阅读并尝试了解名称的全部含义。请注意,它们在方法内部和外部是不同的。
def even_odd_split(numbers):
even_numbers = []
odd_numbers = []
for sublist in numbers.values():
for x in sublist:
if x % 2 == 0:
even_numbers.append(x)
else:
odd_numbers.append(x)
return even_numbers, odd_numbers
Dic1 = {"N1": [1, 3, 7, 6, 10],
"N2": [2, 3, 9, 10, 21, 36],
"N3": [4, 6, 5, 12, 24, 35],
"N4": [0, 3, 14, 15, 16, 18]
}
even, odd = even_odd_split(Dic1)
print(f'Even items: {even}\nOdd items: {odd}')
with open("odd.txt", "w") as f:
f.write(str(odd))
with open("even.txt", "w") as f:
f.write(str(even))
推荐阅读
- jquery - How to call a function associated with a dropdown by firing change event on it
- caching - Lighthouse:使用高效的缓存策略服务静态资产
- java - zip4j可以用来解压tar文件吗?
- r - Shiny - 使用 for 循环插入 UI 会在每个输出中返回相同的元素
- azure - Azure 中 docker compose 的存储卷在哪里?
- javascript - Mongoose 虚拟填充返回 null
- javascript - 类型错误:balance.toNumber 不是函数
- android - 在升序和降序之间切换项目排序时如何为recyclerview内容更改设置动画
- json - Python3 // JSON 返回 API 上未编码的字符
- azure-devops - 通知策略绕过