a= {'bana':3, 'hello':2, 'clue':7, 'an':1,'sad':3}
b=list(a.keys())
c=list(a.values())
sorted(c,reverse=True)
x=sorted(c, reverse=True)
print(x)
print(b)
d=[]
for i in x:
for z in b:
if a[z] == i:
l= str(i) +z
d.append(l)
b=sorted(d, reverse=True)
print(d)
你好,我上面有这个代码。每当我打印出d,我都会得到:
['7clue', '3sad', '3bana', '3sad', '3bana', '2hello', '1an']
无论如何我可以做到这一点
['7clue', '3sad', '3bana', '2hello', '1an']
所以它没有重复2个条目? 感谢
答案 0 :(得分:1)
有几种方法可以做到这一点,但我认为只要订购无关紧要,这将是最有效的方法:
>>> a = ['7clue', '3sad', '3bana', '3sad', '3bana', '2hello', '1an']
>>> list(set(a))
['1an', '2hello', '7clue', '3bana', '3sad']
如果订单确实重要,那么你可以用一个简单的列表comp来做到这一点:
>>> def remove_dups(a):
... seen = set()
... seen_add = seen.add
... return [ x for x in a if x not in seen and not seen_add(x)]
...
>>> remove_dups(['7clue', '3sad', '3bana', '3sad', '3bana', '2hello', '1an'])
['7clue', '3sad', '3bana', '2hello', '1an']
答案 1 :(得分:0)
可能有一种更好的方法,但我发现使用set()对我所做的大部分工作都很有效。例如,设置(d)。如果您希望类型保留列表,可以使用list(set(d))。
答案 2 :(得分:0)
from itertools import ifilterfalse,
def unique_everseen(iterable, key=None):
"List unique elements, preserving order. Remember all elements ever seen."
# unique_everseen('AAAABBBCCDAABBB') --> A B C D
# unique_everseen('ABBCcAD', str.lower) --> A B C D
seen = set()
seen_add = seen.add
if key is None:
for element in ifilterfalse(seen.__contains__, iterable):
seen_add(element)
yield element
else:
for element in iterable:
k = key(element)
if k not in seen:
seen_add(k)
yield element
L = ['7clue', '3sad', '3bana', '3sad', '3bana', '2hello', '1an']
res = list(unique_everseen(L))
如果订单无关紧要,您当然可以使用
L = list(set(L))
答案 3 :(得分:0)
怎么样:
In [10]: b = [str(v)+k for k, v in zip(a.keys(), a.values())]
In [11]: b
Out[11]: ['3sad', '1an', '3bana', '2hello', '7clue']
In [12]: sorted(b, key = lambda m: int(m[0:1] ))
Out[12]: ['1an', '2hello', '3sad', '3bana', '7clue']
In [13]: sorted(b, key = lambda m: int(m[0:1] ), reverse=True)
Out[13]: ['7clue', '3sad', '3bana', '2hello', '1an']
答案 4 :(得分:0)
此外,这应该有效:
a= {'bana':3, 'hello':2, 'clue':7, 'an':1,'sad':3}
b=list(a.keys())
x=sorted(list(a.values()), reverse=True)
d=[]
for i in range(len(x)):
d.append(str(x[i])+b[i])
print(d)