我有一个整数字符串,例如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。
我想我可以将此字符串转换为列表,然后使用循环将每个元素添加到所需的列表中。问题是,我不知道如何再次将此字符串转换为列表。我该怎么做?另外,我可以直接从字典中拆分值并保存步骤吗?感谢您的帮助
答案 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(", ")