我一直在教自己蟒蛇,到目前为止它并没有太糟糕。我认为最简单的学习方法就是开始编码,所以我提出了相对简单的任务来帮助我。而现在我陷入了困境,而且无法弄清楚我做错了什么而感到沮丧
{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]作为列表,然后尝试使用连接函数等迭代它...这一切都已完成绝对没有!
这似乎应该很简单,但是我放弃了,我不知道该怎么做,所以希望有人能帮到我。
非常感谢!
答案 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]
要使用map将int
列表转换为str
,请使用(请注意,它也可以与iterables一起使用)
>>> map(str,[1, '.', 0, '-', 8])
['1', '.', '0', '-', '8']
要join使用字符串列表。 (请注意,它也适用于iterables)
"".join(['1', '.', '0', '-', '8'])