字典中字符串值的拆分

4

我有这个字典:

{
    1: '1 2',
    2: '2 3',
    3: '2 3',
    ...
}

我希望你能将每个键的值分离到一个单独的元素列表中。因此,我希望它看起来像这样:
{
    1: [1,2],
    2: [2,3],
    ...
}
3个回答

3
使用字典推导式:
>>> d = {
...     1: '1 2',
...     2: '2 3',
...     3: '2 3',
...     4: '4 3 1',
...     5: '3 4',
...     6: '5 4 2 1',
...     7: '4 4',
...     8: '8 3 5 2',
...     9: '5 7',
...     10: '15 11 8 9 6 3 4',
...     11: '6 2',
...     12: '9 5',
...     13: '7 3',
... }
>>> d2 = {key: list(map(int, value.split())) for key, value in d.items()} # `list` can be omitted in Python 2.7
>>> d2
{1: [1, 2], 2: [2, 3], 3: [2, 3], 4: [4, 3, 1], 5: [3, 4], 6: [5, 4, 2, 1], 7: [4, 4], 8: [8, 3, 5, 2], 9: [5, 7], 10: [15, 11, 8, 9, 6, 3, 4], 11: [6, 2], 12: [9, 5], 13: [7, 3]}

反转:

>>> {key: ' '.join(map(str, value)) for key, value in d2.items()}
{1: '1 2', 2: '2 3', 3: '2 3', 4: '4 3 1', 5: '3 4', 6: '5 4 2 1', 7: '4 4', 8: '8 3 5 2', 9: '5 7', 10: '15 11 8 9 6 3 4', 11: '6 2', 12: '9 5', 13: '7 3'}

大家认为列表推导式和常规循环迭代的可读性如何? - mconlin
我总是更喜欢列表推导式。可读性更高,速度更快,符合惯用语。 - Kiran
'list'对象没有属性'split'!为什么会出现这种情况? - Zesty Dragon
@RajuBhaya,字典的值是文件吗?如果没有具体的例子,我无法回答。请发布一个单独的问题,并附上您的代码,以便其他人可以回答您。 - falsetru

0

使用 str.split() 方法:

d = { 1: '1 2', 2: '2 3', 3: '3 4' }
wanted = {key: [int(val) for val in value.split()] for key, value in d.iteritems()}

0

字符串分割将在空格处分割您的值。 str.split()

因此,您只需迭代字典的键和值并更新该值:

  for key, value in mydictionary.iteritems():
    mydictionary[key] = value.split()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接