前提・実現したいこと
初めて質問します。現在リストの中にstrの型を持つ値があります。それを型毎に整理しなおし、辞書に登録したいです。例えば、辞書キーのIntの中に22、辞書Floatキーを作りその中に100.5、辞書キーstrの中に、A、B、、<、300!など、Boolの中にTrueとFalseといったようにです。
もう少し具体的に言うと、整理した辞書のデータを最終的にこのような形でPrintしたいと思っています。
int: 100
float: 100.5
bool: True, False
str: '', '300?', '<', 'AA', 'BB', 'CC', 'dd'
発生している問題・エラーメッセージ
defaultdictを使えばできるようなのですが、TypeError: first argument must be callable or Noneといったエラーが出てしまいます。またもし他の方法で、簡単に型毎に整理できる方法があれば教えてください。データはXというリストに入っています。また、strの値をintに変えるときに普通はint(y)とすると型が変わると書いてあったのですが、if文で書くと、すべてstrの中に入ってしまいます。うまく型毎の条件を定義できる方法があれば、教えてください。
エラーメッセージ
TEST RUN (program exited with code 1)
** Standard output **
x: ['AA', 'BB', 'true', 'DD', 'false', 'CC', '100', '*', '102.5', '<', '300?']
** Standard error output **
Traceback (most recent call last):
File "/home/currtask/main.py", line XX, in <module>
res = wordTypes(sys.argv[1])
File "/home/currtask/wordtypes.py", line XX, in wordTypes
res=defaultdict(x)
TypeError: first argument must be callable or None
該当のソースコード
res={} res=defaultdict(x) for y in x: if type(int(y)) is int: res[int].append(y) elif typ(float(y)) is float: res[float].append(y) elif y.lower()=='true': if not bool in res: res[bool]=y.capitalize() else: res[bool].append(y.capitalize()) elif y.lower()=='false': if not bool in res: res[bool]=y.capitalize() else: res[bool].append(y) else: if not str in res: res[str]=y else: res[str].append(y)ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。