3

キーとしてタプルを使用し、値としてリストを使用する辞書があります

myDict = {
 (1, 9078752378): [('Smith', 'Bob'), 'Head guard'],
 (2, 9097615707): [('Burdell', 'George'), 'Lifeguard'],
 (3, 9048501430): [('Smith', 'Amanda'), 'Lifeguard'],
 (4, 9026450912): [('Brown', 'John'), 'Lifeguard'],
 (5, 9027603006): [('Flowers', 'Claudia'), 'Lifeguard'],
 (6, 9055520890): [('Smith', 'Brown'), 'Head guard'],
 (7, 9008197785): [('Rice', 'Sarah'), 'Lifeguard'],
 (8, 9063479070): [('Dodd', 'Alex'), 'New Lifeguard'],
 (9, 9072301498): [('Sparrow', 'Jack'), 'New Lifeguard'],
 (10, 9084389677): [('Windsor', 'Harry'), 'New Lifeguard']
}

私はこの辞書をこの形式で書かれた順序でcsvファイルに書き込む方法に完全に固執しています

1 9078752378 Smith Bob Head guard

..などから9

助けてください!!!

4

2 に答える 2

4

フォーマットに一貫性があると仮定すると、これでうまくいくはずです。

with open('youfile.csv', 'w') as f:
  for k,v in sorted(myDict.iteritems()):
    f.write('{} {} {} {} {}\n'.format(k[0], k[1], v[0][0], v[0][1], v[1]))

ただし、出力形式の潜在的な落とし穴について警告する必要があります。ただし、これを再度解析する必要がある場合は、値を引用するか、別の区切り文字を使用します。例:

1 9078752378 Smith Bob "Head guard"

于 2013-02-08T03:34:04.603 に答える
3
with open("CSV", 'w') as f:
   f.write('\n'.join([",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())]))

説明 -

sorted(myDict.items())キーに基づいて辞書を並べ替えます。

for (a, b), ((c, d), e) in sorted(myDict.items())値を解凍します。

",".join(map(str,[a,b,c,d,e]))解凍された値をコンマで結合します。

[",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())]上記のコンマ結合値のリスト内包表記です。

'\n'.join([",".join(map(str,[a,b,c,d,e])) for (a, b), ((c, d), e) in sorted(myDict.items())]上記のリストに改行で参加します。

于 2013-02-08T03:32:18.330 に答える