将字典转换为可转换的浮点数

时间:2018-07-13 15:52:45

标签: python pandas dictionary

我正在寻求创建一个函数,该函数可以将我从CSV导入的列表转换为浮点数,并将数字转换为浮点数。

在一种CSV中,字典看起来像['a':'1','b':'1.1','c':'1.2'],在另一种中,字典看起来像['1':'1','2':'1.2','3':'1.5'],也可能是以上两个['1':'1','1','2':'1.4','UNKNOWN':'1.4']

的组合

现在,这些文件是使用pd.read_csv(SheetAddress, header=None, index_col=0, squeeze=True).to_dict()导入的,但是所有这些都保留为字符串。我试图编写一个函数,将它们转换为新字典,其中包含所有可以转换为浮点数的字符串,然后将其保留为字符串。

def DictToInt(DictionaryToConvert, New_Dictionary):
   for Column1, Column2 in DictionaryToConvert.items():
       if Column1.isdigit():
           float(Column1)
       elif Column2.isdigit():
           float(Column2)   

几乎可以使用,它将所有[['1':'1','2':'1.2','3':'1.5']类型字典的字典都转换为浮点数,但对于混合类型字典却不起作用。我尚未在['a':'1','b':'1.1','c':'1.2']类型上对其进行过测试,因为它不适用于混合类型,但是必须牢记这一点来构建解决方案。

为什么['UNKNOWN':'1']没有转换为['UNKNOWN':1.0],在我的循环中逻辑不正确吗?这样的解决方案正确吗?

1 个答案:

答案 0 :(得分:3)

这应该可以解决问题,result是您的原始词典,def convert_to_float(num) : try : num = float(num) except ValueError : pass return num result = { convert_to_float(k) : convert_to_float(v) for k,v in data.items() } -好吧,您猜对了=)

import 'package:cloud_firestore/cloud_firestore.dart';
import 'dart:async';
import 'package:pari/game.dart';

class Schedule {
  static Map<String, Game> games = Map<String, Game>();

  static StreamController<Map<String, Game>> _onUpdateController = StreamController.broadcast();
  static Stream get onUpdate => _onUpdateController.stream;

  static void setupListener() {
    print('setupListener');

    DocumentReference reference = Firestore.instance.collection('schedule').document('2018');
    reference.snapshots().listen((documentSnapshot) {
      print('listen begin');

      List<Game> sortedList = List<Game>();
      documentSnapshot.data.values.forEach((value) {
        Game game = Game.fromMap(value);
        sortedList.add(game);
      });
      sortedList.sort((a,b) => a.startTime.compareTo(b.startTime));

      games.clear();
      sortedList.forEach((game) {
        games.addAll({game.key: game});
      });

      _onUpdateController.add(games);

      print('listen end');
      print('games: ${games.length}');
    });
  }
}