文档内容如下:
(数据对) (信息)
----------------- ------------------------
1 2 3 4 5
----------------- ------------------------
pr333 sd23a2 thisisa 1001 1005
pr333 sd23a2 sentence 1001 1005
pr33w sd11aa we 1022 1002
pr33w sd11aa have 1022 1002
pr33w sd11aa adream 1033 1002
......
第 1, 2 列作为一个 数据对
如果前两列相同,判断后面的是否相同,如果不同就连接起来,合并成一行
如同下面的效果:
pr333 sd23a2 thisisa|sentence 1001 1005
pr33w sd11aa we|have|adream 1022|1033 1002
....
小白,不懂怎么做,只能想到用字典,好像又行不通,求各位大神帮忙
阿神2017-04-17 17:52:17
出力の順序を維持したい場合は、OrderedDict
を使用する必要があります。後続の情報は、順序を維持するために OrderedDict
を使用します。混乱している場合は、list
を使用して順序を維持してください。set
は良い選択です。
リーリー
阿神2017-04-17 17:52:17
このコードに関する考慮事項をすべて説明してください。
最初の順序は 順序 です。ここでの順序には 2 つの部分があり、1 つは出力行の順序であり、もう 1 つは項目がマージされた後の順序です。私たちは次のことを観察しました:
リーリーは次のように変更されます:
リーリー出力行の順序を考慮する必要があります: pr333 は pr33w の前に来ます
プロジェクトをマージした後の順序を考慮する必要があります。thisisa は文の前に来ます
これは、使用するデータ型が順序を維持できる必要があることを意味します
2 番目は速度です。シーケンス タイプが線形検索であることは誰もが知っています。効率を高めるには、マッピング タイプを使用する方がよいでしょう。
moling3650 さんがおっしゃるように、3 つの検討を行った結果、OrderedDict
が良い選択です。これで行出力の問題は解決できますが、マージプロジェクトでは値ではなくキーのみを使用する必要があるため、OrderedDict
を使用するのは残念ですが、現在標準ライブラリには OrderSet
オプションがありません。それでなんとかしなければなりません。
OrderedDict の詳細については、OrderedDict を参照してください
実際には、サードパーティのライブラリ OrderedSet があります
または自分で実装することもできます。OrderedSet (Python レシピ) を参照してください
最後に、linkse7en はこの種の文書処理の問題に関して非常に優れた点を持っています。読み取りと書き込みを同時に行うことができれば、読み取りと処理を同時に行うことが間違いなく効率的になります。 > (ドキュメントを処理する必要があるのは一度訪問するだけであるため)() および 討論請見評論部分 moling 大的觀點
リソースの節約<🎜> (出力はすぐに完了するため、データを保存するためのスペースを無駄にする必要はありません)。ただし、重複したデータのペアが 行 に現れる可能性があることを考慮すると、安定性を確保するにはさらに多くのリソースを費やす必要があります。
: リーリー
コード部分についても説明します (私の文章はあまり良くないかもしれませんが、いくつかの経験を共有できます)。1 つ目は、
クラスのアプリケーションです。
slice
Python プログラマーとして、
スライスについてよく知っている必要があります。 リーリー は実際には次のように記述できます:
リーリーメリットは何ですか?
この機能を使用してスライスに名前を付けることができます。この質問のコードを例に挙げると、当初は
データ ペアと その他のデータ を抽出する必要がありました。 リーリー しかし、この方法では、これら 2 つの範囲に名前を付けることができるので、次のようにします。
リーリーよりエレガントで読みやすい方法で
から値を取得できます。
items
リーリー
setdefault
キー値
を返します。それ以外の場合は、ディクショナリに新しいキーと値のペア key
が自動的に挿入され、dic[key]
が返されます。 >。 dic[key] = default_value
default_value
この手法は、ネストされたタプルを簡単に解体するために使用できます。
皆さん、私が話しすぎると文句を言わないでくれてありがとう...