将一个整数字符串转换成一个列表,并按奇偶元素对其排序

2024-10-01 02:20:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个整数字符串,比如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在另一个列表中

我想我可以将这个字符串转换成一个列表,然后使用循环将每个元素附加到我需要的列表中。问题是,我不知道如何把这个字符串变成一个列表。我该怎么做?或者,我可以直接从字典中拆分值并保存步骤吗?谢谢你的帮助


Tags: 字符串元素列表string字典排序步骤数字
3条回答

不需要字符串转换。实际上,没有必要为您的问题创建一个包含所有键的列表。您可以使用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']访问偶数键

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

new_list = string.split(", ")

是的,您可以直接从字典中拆分值!在dictionary对象上使用.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]

相关问题 更多 >