剥离空格并连接存储在字典中单个键中的多个值

时间:2012-04-18 06:40:07

标签: python dictionary whitespace

我一直在教自己蟒蛇,到目前为止它并没有太糟糕。我认为最简单的学习方法就是开始编码,所以我提出了相对简单的任务来帮助我。而现在我陷入了困境,而且无法弄清楚我做错了什么而感到沮丧

{0: [[1, '.', 0, '-', 8]], 
1: [['.', 3, '.', 2, 0, 0, 1, '-']], 
2: [], 
3: [['.', '.']], 
4: [], 
5: [[2, 0, 1, 2, '-', 0, 1, '-', 1, 9]], 
6: [[1, '.', 0, 0, 9, 5]], etc...

所以我有一个字典,其中每个键都有一个值(这是各种货币对的汇率)。我一直在尝试将值转换为单个字符串,例如:

0: [[1, '.', 0, '-', 8]] would become 0: '1.0-8'
6: [[1, '.', 0, 0, 9, 5]] would be 6 : '1.0095'
etc...

经过几个小时的尝试各种方法和谷歌搜索,我得出的结论是,我不知道如何实现这一目标。我已经尝试过替换,以及各种复杂的循环,将字典转换为列表列表,其中键[value]作为列表,然后尝试使用连接函数等迭代它...这一切都已完成绝对没有!

这似乎应该很简单,但是我放弃了,我不知道该怎么做,所以希望有人能帮到我。

非常感谢!

4 个答案:

答案 0 :(得分:1)

一衬垫...

>>> {i:(''.join(str(x) for x in j[0]) if j else '') for i,j in d.items()}
{0: '1.0-8', 1: '.3.2001-', 2: '', 3: '..', 4: '', 5: '2012-01-19', 6: '1.0095'}

“以友好的方式写作”,正如所问:

d_new = {}
for i,j in d.items():
    if j:
        d_new[i] = ''.join(str(x) for x in j[0])
    else:
        d_new[i] = ''

答案 1 :(得分:0)

d = {0: [[1, '.', 0, '-', 8]], 6: [[1, '.', 0, 0, 9, 5]]}
for k,v in d.iteritems():
    print str(k)+':'+''.join(str(el) for el in v[0])

答案 2 :(得分:0)

>>> from itertools import chain
>>> d = {0: [[1, '.', 0, '-', 8]], 1: [['.', 3, '.', 2, 0, 0, 1, '-']], 2: [], 
3: [['.', '.']], 4: [], 5: [[2, 0, 1, 2, '-', 0, 1, '-', 1, 9]], 6: [[1, '.', 0, 0, 9, 5]]}
>>> {k:''.join(str(el) for el in chain.from_iterable(v)) for k,v in d.items()}
{0: '1.0-8', 1: '.3.2001-', 2: '', 3: '..', 4: '', 5: '2012-01-19', 6: '1.0095'}

答案 3 :(得分:0)

另一种方法。这里链条负责打开列表并处理空列表。

>>> {k:"".join(map(str,chain(*v))) for k,v in spam.items()}
{0: '1.0-8', 1: '.3.2001-', 2: '', 3: '..', 4: '', 5: '2012-01-19', 6: '1.0095'}

几乎没有直观的方法

要使用itertools.chain打开[[1, '.', 0, '-', 8]]这样的列表,请使用

>>> list(chain(*[[1, '.', 0, '-', 8]]))
[1, '.', 0, '-', 8]

要使用mapint列表转换为str,请使用(请注意,它也可以与iterables一起使用)

>>> map(str,[1, '.', 0, '-', 8])
['1', '.', '0', '-', '8']

join使用字符串列表。 (请注意,它也适用于iterables)

"".join(['1', '.', '0', '-', '8'])

Dictionary Comprehension