我是Python的新手。 我想以特定格式打印列表中的元素而不重复:{" id":value}。 这是我的代码。
d =['l','o','u','l','b','l','a']
for item in range(0,len(d)):
prev=item-1
if item==0:
print(" {\"id\": \"" + (d[item]) + "\"} ,")
continue
if (d[item]==d[prev])or(d[item] in d[:prev]):
continue
else:
print(" {\"id\": \"" + (d[item]) + "\"}"),
if (item==(len(d))): #if last element, print ".", else print ","
print(".\n"),
else:
print(",\n"),
结果应为:
{"id": "l"} ,
{"id": "o"} ,
{"id": "u"} ,
{"id": "b"} ,
{"id": "a"} .
但输出是:
{"id": "l"} ,
{"id": "o"} ,
{"id": "u"} ,
{"id": "b"} ,
{"id": "a"} ,
我的代码一直运行到最后一行。它结束于","而不是"。"。 请帮帮我
答案 0 :(得分:1)
尝试if (item==len(d)-1):
最后一项有索引len(d)-1。
顺便说一下,使用set()可以更轻松地删除列表中的重复项:
list(set(['a', 'a', 'b']))
将返回['a','b']
)
警告:如果您使用set()
,则会丢失商品的订单。如果您想保留订单,请参阅How do you remove duplicates from a list in whilst preserving order?。
答案 1 :(得分:0)
在python中,范围(0,N)函数返回0到N-1之间的数字。 在您的情况下,您使用了N = len(d),因此您应该相应地更改if语句。 试试:
if (item==(len(d)-1)): #if last element, print ".", else print ","
print(".\n")
相反。
完整运行的代码应如下所示:
d =['l','o','u','l','b','l','a']
for item_id, item in enumerate(set(d)):
if item_id != (len(d) - 1):
print(" {\"id\": \"" + item + "\"} ,")
else:
print(" {\"id\": \"" + item + "\"} .")
答案 2 :(得分:0)
if (item==(len(d)))
代码永远不会碰到这个块,因为
item只能达到len(d)-1
d =['l','o','u','l','b','l','a']
for item in range(0,len(d)):
prev=item-1
if item==0:
print(" {\"id\": \"" + (d[item]) + "\"} ,")
continue
if (d[item]==d[prev])or(d[item] in d[:prev]):
continue
else:
print(" {\"id\": \"" + (d[item]) + "\"}"),
if (item!=(len(d))-1): #if last element, print ".", else print ","
print(",\n"),
print(".\n")
使用集合:
d =['l','o','u','l','b','l','a']
d = list(set(d))
for item in range(0,len(d)):
print(" {\"id\": \"" + (d[item]) + "\"}"),
if (item!=(len(d))-1): #if last element, print ".", else print ","
print(",\n"),
print(".\n")
答案 3 :(得分:0)
由于range
是独占的,range(0,len(d))
的值将从0到len(d) - 1.因此,你的if语句应为 -
if item == (len(d) - 1):
print(".\n")
如果列表中的最后一个元素是重复的,则最好创建一个集合。请尝试以下方法 -
d = {'l','o','u','l','b','l'}
for i, e in enumerate(d):
print(" {\"id\": \"" + (e) + "\"}"),
if i == len(d) - 1:
print(".\n")
else:
print(",\n")
此处,d = {'l','o','u','l','b','l'}
创建一个删除重复元素的集合。然后你可以简单地迭代它