将整数字符串转换为列表,并按奇数和偶数元素对其进行排序

时间:2018-11-11 02:39:09

标签: python list dictionary

我有一个整数字符串,例如string = {11, 2, 14, 1, 17, 1, 123, 1},我需要将其变成一个列表,然后将它们排序为两个单独的奇数和偶数元素列表。

我有一本像{11: 2, 14: 1, 17: 1, 123: 1}的字典,将其转换为字符串,并将冒号删除为逗号,所以现在有了第一个字符串。我这样做是为了将元素拆分为一个列表中包含数字11、14、17和123,另一列表中包含数字2、1、1、1和1。

我想我可以将此字符串转换为列表,然后使用循环将每个元素添加到所需的列表中。问题是,我不知道如何再次将此字符串转换为列表。我该怎么做?另外,我可以直接从字典中拆分值并保存步骤吗?感谢您的帮助

3 个答案:

答案 0 :(得分:3)

是的,您可以直接从字典中拆分值!您将在字典对象上使用.keys().values()

>>> obj = {11: 2, 14: 1, 17: 1, 123: 1}
>>> list(obj.keys())
[123, 17, 11, 14]
>>> list(obj.values())
[1, 1, 2, 1]

答案 1 :(得分:0)

不需要字符串转换。实际上,不需要为您的问题创建所有键的列表。您可以使用collections.defaultdict并迭代字典:

from collections import defaultdict

x = {11: 2, 14: 1, 17: 1, 123: 1}

dd = defaultdict(list)

for key in x:
    dd['odd' if key % 2 else 'even'].append(key)

结果是奇数和偶数键的字典映射:

defaultdict(list, {'odd': [11, 17, 123],
                   'even': [14]})

然后,您可以通过dd['odd']访问奇数键,甚至可以通过dd['even']访问奇数键。

答案 2 :(得分:0)

要将字符串拆分为整数,请使用内置的split方法返回每个项目的列表:

new_list = string.split(", ")