我正在寻求创建一个函数,该函数可以将我从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]
,在我的循环中逻辑不正确吗?这样的解决方案正确吗?
答案 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}');
});
}
}