从字典中过滤偶数和奇数并将这些偶数和奇数添加到 lists.in python
filter even and odd values from a dictionary and add these even and odd values to lists.in python
我想从字典中过滤偶数和奇数值。我试图将这些偶数和奇数值添加到列表中,但我一直得到空输出,为什么?我的代码是这样的:
def Split(Dic1):
even = [ele for ele in Dic1.values() if ele is 2 ==0]
odd = [ele for ele in Dic1.values() if ele is 2 !=0]
print("Even lists:", even)
print("Odd lists:", 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]
}
Split(Dic1)
输出:
Even lists: []
Odd lists: []
ele is 2 == 0
根本不是正确的表达方式。 is
运算符检查两个变量是否引用同一个对象;将此真值(True
或 False
)与 0 进行比较基本上是 if False == False
但这显然不是您要检查的内容。
检查某物是否可整除的运算符称为 modulo,在 Python 中拼写为 %
.
遍历输入列表两次似乎不够优雅;您可能应该只循环一次,然后选择将每个值复制到哪个新列表。
您的函数不应尝试修改全局变量。相反,使它成为 return 两个新列表,并让调用者决定如何处理结果(在这里,打印它)。
您输入的字典的 values()
不是数字,因此您不能直接在循环中使用它们。为每个键拆分出单独的值,或者更改函数以期望列表列表来自 values()
.
函数名可能不使用 Proper Case; Python 约定是将 class 名称大写,但对常规函数和变量使用 snake_case
。
def even_odd_split(Dic1):
even = []
odd = []
for sublist in Dic1.values():
for ele in sublist:
if ele % 2 == 0:
even.append(ele)
else:
odd.append(ele)
return even, odd
print('Even items: %s\nOdd items%s' % even_odd_split(Dic1))
也许注意到 %
在其第一个参数是字符串时也是 - 有点令人困惑 - 格式化运算符。这是运算符重载的一个例子;尽管现代 Python 可能更喜欢您在此处使用 .format()
或 f-string。
我想从字典中过滤偶数和奇数值。我试图将这些偶数和奇数值添加到列表中,但我一直得到空输出,为什么?我的代码是这样的:
def Split(Dic1):
even = [ele for ele in Dic1.values() if ele is 2 ==0]
odd = [ele for ele in Dic1.values() if ele is 2 !=0]
print("Even lists:", even)
print("Odd lists:", 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]
}
Split(Dic1)
输出:
Even lists: []
Odd lists: []
ele is 2 == 0
根本不是正确的表达方式。 is
运算符检查两个变量是否引用同一个对象;将此真值(True
或 False
)与 0 进行比较基本上是 if False == False
但这显然不是您要检查的内容。
检查某物是否可整除的运算符称为 modulo,在 Python 中拼写为 %
.
遍历输入列表两次似乎不够优雅;您可能应该只循环一次,然后选择将每个值复制到哪个新列表。
您的函数不应尝试修改全局变量。相反,使它成为 return 两个新列表,并让调用者决定如何处理结果(在这里,打印它)。
您输入的字典的 values()
不是数字,因此您不能直接在循环中使用它们。为每个键拆分出单独的值,或者更改函数以期望列表列表来自 values()
.
函数名可能不使用 Proper Case; Python 约定是将 class 名称大写,但对常规函数和变量使用 snake_case
。
def even_odd_split(Dic1):
even = []
odd = []
for sublist in Dic1.values():
for ele in sublist:
if ele % 2 == 0:
even.append(ele)
else:
odd.append(ele)
return even, odd
print('Even items: %s\nOdd items%s' % even_odd_split(Dic1))
也许注意到 %
在其第一个参数是字符串时也是 - 有点令人困惑 - 格式化运算符。这是运算符重载的一个例子;尽管现代 Python 可能更喜欢您在此处使用 .format()
或 f-string。