Python 如何与dict一起使用join
我一直在做一个小项目,在那里我有一个计数器来检查一个字符是否达到一个特定的数字,然后它会根据给定的计数打印出来。如果它没有到达柜台,我们就把整张单子打印出来 我做过这样的事情:Python 如何与dict一起使用join,python,dictionary,Python,Dictionary,我一直在做一个小项目,在那里我有一个计数器来检查一个字符是否达到一个特定的数字,然后它会根据给定的计数打印出来。如果它没有到达柜台,我们就把整张单子打印出来 我做过这样的事情: payload = {'40': None, '42': None, '44': '6', '43': '3', '46': None, '45': '7', '51': None, '48': None, '47': None, '39': None} characterCount, i = 0
payload = {'40': None, '42': None, '44': '6', '43': '3', '46': None, '45': '7', '51': None, '48': None, '47': None,
'39': None}
characterCount, i = 0, 0
for j, item in enumerate(payload):
if len(item) + characterCount > 5:
print('\n'.join(payload[i:j]))
characterCount, i = len(item), j
else:
characterCount += len(item)
if characterCount:
print('\n'.join(payload[i:]))
我确实有两个问题
TypeError:unhabable type:'slice'
,但我不知道是否有类似的方法,或者更好的方法
无
)
payload = ['40', '42', '44', '43', '46', '45', '51', '48', '47', '39']
characterCount, i = 0, 0
for j, item in enumerate(payload):
if len(item) + characterCount > 5:
print("Inside the if statement")
print('\n'.join(payload[i:j]))
characterCount, i = len(item), j
else:
characterCount += len(item)
if characterCount:
print('\n'.join(payload[i:]))
输出
Inside the if statement
40
42
Inside the if statement
44
43
Inside the if statement
46
45
Inside the if statement
51
48
47
39
这就是我想做的,但用dicts来代替:)我不太明白这个程序的意义,但是如果我理解了你想正确地做什么,那么你可以使用一个带键值对的过滤字典,它有值(而不是无值) 编辑,这里是一个更新版本,希望它更接近您所寻找的:
payload = {'40': None, '42': None, '44': '6', '43': '3', '46': None, '45': '7', '51': None, '48': None, '47': None,
'39': None}
characterCount, i = 0, 0
for j, item in enumerate(payload):
if len(item) + characterCount > 5:
selectedPayloads = ['{0} {1}'.format(k, payload[k]) for k in list(payload)[i:j] if payload[k] is not None]
if len(selectedPayloads) != 0:
print('\n'.join(selectedPayloads))
characterCount, i = len(item), j
else:
characterCount += len(item)
你的问题是,你正在使用dicts的切片。如果
payload
是一个dict,那么它应该做什么呢?@baduker不确定我在开始时是否不够清楚,正如我提到的,我做了一个小函数,在这里我进行字符计数,正如我们在这个代码if len(item)中看到的那样+characterCount>5:
意味着如果项目和字符计数的长度大于5,那么我们希望打印出print('\n'.join(payload[i:j])
,这意味着在我们的情况下,它可能会从索引3开始,然后在索引5处停止,例如。但正如你所提到的,我们不能将切片与dicts一起使用,这是我的问题之一,正如我在下面的代码中提到的,我仍然没有得到你想要在这里做的事情。。。此外,使用enumerate
和切片表示法[:]
不是处理Python字典数据结构的方式@baduker重点是我想使用“\n.join(..)
打印给定索引上的有效负载,但我知道这是不可能的,正如我所看到的,我在这里:(这就是为什么我要问的原因,因为我不知道如何像以前那样在dict中使用numerate和slice表示法。如果你想要一个带有列表的场景,我可以告诉你,这对我尝试做的事情更有意义吗?看,如果你想使用枚举
,索引和slice不使用字典。嘿,凯维n!我现在已经更新了我的问题,不确定这是否会给你们提供更好的背景,因为我仍在努力改进。在我的脑海里,听起来我问了一个非常好的问题,但我可能错了:)但我用你的测试代码并不是我想要的,因为我也想打印出值。基本上打印所有内容,key:value,但如果value确实包含None,那么只需跳过None值(不要打印None)在本例中,您仅打印键。是否要在到达第一个if语句时同时打印键和值?但仅从i到j,只要值不是无?您的回答是正确的:在本例中,您仅打印键。
-这是因为我在使用dicts时没有使用任何值,因此uld看起来非常糟糕,因为它做了一些类似于有效载荷=['40 None',42 None',44 6',43 3',46 None',45 7',51',48',47',39']
的事情,所以我想改为转换为Dict。这意味着如果有值,我会同时打印键和值(这意味着它不应该包含值None
).i到j取决于总字符数是否达到x个字符,在我们的示例中,我们检查总字符数是否超过10个,如果超过10个,则使用i到j打印。哇!这太漂亮了!这正是我想要的!这太酷了!
payload = {'40': None, '42': None, '44': '6', '43': '3', '46': None, '45': '7', '51': None, '48': None, '47': None,
'39': None}
characterCount, i = 0, 0
for j, item in enumerate(payload):
if len(item) + characterCount > 5:
selectedPayloads = ['{0} {1}'.format(k, payload[k]) for k in list(payload)[i:j] if payload[k] is not None]
if len(selectedPayloads) != 0:
print('\n'.join(selectedPayloads))
characterCount, i = len(item), j
else:
characterCount += len(item)