Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用してファイル名を一意にするプログラム


名前と呼ばれるn個の文字列の配列があるとします。ファイルシステムにn個のディレクトリを作成して、i番目の時点でnames[i]という名前のディレクトリを作成する必要があります。 2つのファイルに同じ名前を付けることはできません。重複するディレクトリ名を入力すると、システムの名前に(k)の形式で接尾辞が追加されます。ここで、kは、取得した名前が一意のままになる最小の正の整数です。長さnの文字列の配列を見つける必要があります。ここで、ans [i]は、作成時にi番目のディレクトリに割り当てられる実際の名前です。

したがって、入力がnames =["my_dir"、 "my_dir(1)"、 "my_new_dir"、 "my_new_dir"、 "abc"]の場合、出力は['my_dir'、'my_dir(1)'になります。 、'my_new_dir'、'my_new_dir(1)'、'abc'] "my_new_dir"はすでに1回存在しているため、最初の1つの後に1つ追加されます。

これを解決するには、次の手順に従います-

  • dic:=新しいマップ、キーが存在しない場合は0を返します

  • res:=新しいリスト

  • 名前の名前ごとに、実行します

    • 名前がdicでない場合は、

      • dic [name]:=dic [name] + 1

      • resの最後に名前を挿入

    • それ以外の場合

      • newname:=name concatenate'(' concatenate dic [name] concatenate')'

      • newnameがdicに存在する間、実行します

        • dic [name]:=dic [name] + 1

        • newname:=name concatenate'(' concatenate dic [name] concatenate')'

      • dic [newname]:=1

      • resの最後にnewnameを挿入します

  • 解像度を返す

理解を深めるために、次の実装を見てみましょう-

from collections import defaultdict
def solve(names):
   dic = defaultdict(int)
   res = []
   for name in names:
      if name not in dic:
         dic[name] += 1
         res.append(name)
      else:
         newname = name +'(' + str(dic[name]) + ')'
         while newname in dic:
            dic[name] += 1
            newname = name +'(' + str(dic[name]) + ')'
         dic[newname] = 1
         res.append(newname)
   return res
names = ["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]
print(solve(names))

入力

["my_dir","my_dir(1)","my_new_dir","my_new_dir","abc"]

出力

['my_dir', 'my_dir(1)', 'my_new_dir', 'my_new_dir(1)', 'abc']

  1. Pythonでインドの旗を作るプログラム

    グラフを描画するPythonのライブラリには、グラフを提供するだけでなく、フラグなどの他の図を柔軟に描画できる非常に広範な機能があります。その意味で、これらのモジュールには芸術的なタッチがあります。この記事では、ライブラリnumpyとmatplotlibを使用してインドの旗を描く方法を説明します。 アプローチ 同じ幅の長方形を3つ作成し、適切な色と境界線で描画します。 pyplot関数を使用して、中央の長方形の中央にAshokChakraの円を描きます。 numpyとmatplotlibを使用して、AshokChakra内に24本の線を描画します。 上記のすべての図では

  2. Pythonを使用したWebサイトブロッカー

    大規模なIT企業で働いている場合は、その2つのWebサイト、特にFacebook、YouTube、Instagramなどのソーシャルネットワーキングサイトがブロックされていることに気付くかもしれません。 サードパーティのアプリケーションを使用して特定のWebサイトをブロックする代わりに、選択したWebサイトをブロックする独自のカスタムアプリケーションを開発できます。PythonでWebサイトブロッカーを開発することもそれほど難しくありません。それが私たちがやろうとしていることです-私たちが望むウェブサイトをブロックするPythonスクリプトを開発します。 前提条件: Python3.xが