问题描述
我已经编写了一些非常简单的代码,例如:
data = ["39","40.5","41","42","42.5","43","44","44.5","45","45.5","46"]
characterCount,i = 0,0
for j,item in enumerate(data):
if len(item) + characterCount > 20:
print('\n'.join(data[i:j]))
characterCount,i = len(item),j
else:
characterCount += len(item)
if characterCount:
print("if characterCount")
print('\n'.join(data[i:]))
但是当基于列表时,这很好用,但是我创建了一个类似以下内容的字典:
data = {
'39': ' - (3)','40.5': ' - (4)','41': None,'42': ' - (16)','42.5': None,'43': ' - (36)','44': ' - (78)','44.5': None,'45': ' - (30)','45.5': ' - (12)','46': None
}
当我使用dict运行代码时,它返回:TypeError: unhashable type: 'slice'
行中的print('\n'.join(data[i:j]))
我的问题是,如何将键和值打印为一个值,并且如果dict的值不为None,那么我们只打印不带“ None”值的键?
解决方法
不起作用的原因是因为您无法使用切片语法访问字典中的项目-必须使用其键直接访问它们。
最简单的方法是将键作为列表获取,然后循环播放,检查值是否不是None,然后将其串联并打印。
dict_keys = list(data.keys())
for index,key in enumerate(dict_keys):
if data[key]:
print(dict_keys[index] + data[key])
else:
print(dict_keys[index])