我有三个列表,我们称之为List1,List2和List3。
列表1和2由函数作为参数接收,List3在函数中创建。
我试图获取List1并计算其中每个唯一元素出现的次数,并按照第一个实例的顺序在那些唯一元素的列表旁边显示这些数字,而不重复元素出现在List1中。
细分: List1包含许多元素,有一些重复。 List2包含List1中一组唯一的元素,它们首先出现在List1中。 List3包含List2中每个唯一元素出现在List1中的次数,紧邻List2中该数字对应的唯一元素。
以下是我尝试实现此目标的方式,但我遗漏了一些东西。我可能完全不在编码上。请让我知道如何完成这项任务。谢谢!
def successfulTrials(List1, List2):
List3 =[y]
for x in List1:
y = List1.count(i) for i in List2
for z in List3:
z.extend([i])
print(z)
人们要求列出一个例子: List1 = [' Jan',' Feb',' Aug',' Mar',' Jan',&# 39; Apr',' May',' Sep'' Jun'' Jan'' Jul&#39 ,' 8月' 9月' 10月' 11月' 1月' 1月'' ;十二月']
List2 = [' Jan',' Feb',' Mar',' Apr',' May' ,' Jun' Jul',' Aug',' Sep'' Oct',' Nov',' Dec']
List3的显示如下: 1月4日 2月1日 8月2日 3月1日 4月1日 5月1日 9月2日 6月1日 7月1日 10月1日 11月1日 12月1日
答案 0 :(得分:1)
List1 = ['Jan', 'Feb', 'Aug', 'Mar', 'Jan', 'Apr', 'May', 'Sep', 'Jun', 'Jan', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Jan', 'Dec']
List2 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
def successfulTrials(List1, List2):
List3 = []
for x in List2:
List3.extend([List1.count(x),x])
结果:
[4, 'Jan', 1, 'Feb', 1, 'Mar', 1, 'Apr', 1, 'May', 1, 'Jun', 1, 'Jul', 2, 'Aug', 2, 'Sep', 1, 'Oct', 1, 'Nov', 1, 'Dec']
答案 1 :(得分:0)
list2=[]
list3={}
for a in List1:
if a in list2:
list3[a]+=1
else:
list2.append(a)
list3[a]=1
答案 2 :(得分:0)
使用dictionary
会更好:
>>> List1 = ['Jan', 'Feb', 'Aug', 'Mar', 'Jan', 'Apr', 'May', 'Sep', 'Jun', 'Jan', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Jan', 'Dec']
>>> List2 = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
>>> my_dict = { x:List1.count(x) for x in List2 }
>>> my_dict
{'Mar': 1, 'Feb': 1, 'Aug': 2, 'Sep': 2, 'Apr': 1, 'Jun': 1, 'Jul': 1, 'Jan': 4, 'May': 1, 'Nov': 1, 'Dec': 1, 'Oct': 1}
但是如果你想要列表:
>>> List3 = [ [x,List1.count(x)] for x in List2 ]
>>> List3
[['Jan', 4], ['Feb', 1], ['Mar', 1], ['Apr', 1], ['May', 1], ['Jun', 1], ['Jul', 1], ['Aug', 2], ['Sep', 2], ['Oct', 1], ['Nov', 1], ['Dec', 1]]
如果你想使用extend:
>>> List3 = []
>>> for x in List2:
... List3.extend([" ".join([x,str(List1.count(x))])])
...
>>> List3
['Jan 4', 'Feb 1', 'Mar 1', 'Apr 1', 'May 1', 'Jun 1', 'Jul 1', 'Aug 2', 'Sep 2', 'Oct 1', 'Nov 1', 'Dec 1']
答案 3 :(得分:0)
我建议您使用:
list
类型; set
类型(它只存储唯一值); dictionary
类型(您将拥有所有值及其计数的对)。因此,在获取List1和List2之后,succesfulTrials
的代码将如下所示:
def succesfulTrials(List1, List2):
List3 = {}
# Grab data
for item in List2:
List3[item] = List1.count(item)
# Print data
for (key, value) in List3.items():
print value, key,
答案 4 :(得分:0)
对于重复计算,这可能很有用,请查看。
import collections
List1 = ['Jan', 'Feb', 'Aug', 'Mar', 'Jan', 'Apr', 'May', 'Sep', 'Jun', 'Jan', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Jan', 'Dec']
List3 = collections.Counter(List1)
print(List3)
<强>输出强>
Counter({'Jan': 4, 'Aug': 2, 'Sep': 2, 'Mar': 1, 'Feb': 1, 'Apr': 1, 'Jun': 1, 'Jul': 1, 'May': 1, 'Nov': 1, 'Dec': 1, 'Oct': 1})