0

私は自分自身にPythonを教えてきましたが、これまでのところそれほど悪くはありません。学ぶのに最も簡単な方法はコーディングを始めることだと思うので、私を助けるための比較的簡単なタスクを考え出しました。そして今、私は立ち往生していて、私が間違っていることを理解できないのはイライラしています

{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...

何時間にもわたってさまざまな方法を試し、グーグルで調べた結果、これを実現する方法がまったくわからないという結論に達しました。私は置換を試みました、そして辞書をリストとしてkey [value]を持つリストのリストに変えて、それから結合関数などを使ってそれを反復しようとする様々な複雑なループ...そしてそれはすべて達成されました何もない!

簡単そうに見えますが、あきらめて、どうしたらいいのかわからないので、ここの誰かに手を貸してもらいたいです。

どうもありがとう!

4

4 に答える 4

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] = ''
于 2012-04-18T06:46:17.660 に答える
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])
于 2012-04-18T06:56:25.003 に答える
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'}
于 2012-04-18T07:21:01.327 に答える
0

別のアプローチ。ここで chain は、リストのアンラップと空のリストの処理に気を配っています。

>>> {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します (イテラブルでも機能することに注意してください)。

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

文字列のリストを結合するには、次を使用します。(イテラブルでも動作することに注意してください)

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

辞書理解

于 2012-04-18T07:25:51.060 に答える