柜台物品分离
Separating items of counter
with open('data2.csv','r') as data:
reader = csv.DictReader(data)
counter = Counter()
languages = []
popularity = []
for line in reader:
counter.update(line['\ufeffProgramming language'].split(','))
for item in counter:
languages.extend(item[0])
popularity.extend(item[1])
print(counter)
print(languages)
print(popularity)
输出:
Counter({'Java' : 2, 'C++' : 2, 'Python' : 1})
['P', 'J', 'C']
['y', 'a', '+']
为什么当我尝试将计数器的值分成两部分(即语言和流行度)时,我得到了一个奇怪的结果?
您需要迭代计数器的 items:
for item in counter.items():
languages.append(item[0])
popularity.append(item[1])
目前你在做:
for item in counter:
languages.extend(item[0])
popularity.extend(item[1])
这只遍历键,所以当你做 item[0]
时你得到键的第一个字符,这也适用于 item[1]
。因此你得到:
['P', 'J', 'C']
['y', 'a', '+']
你的按键对应的第一个和第二个字母。另一种可能更 pythonic 的方法是使用 zip:
counter = {'Java' : 2, 'C++' : 2, 'Python' : 1}
languages, popularity = zip(*counter.items())
print(languages)
print(popularity)
输出
('Java', 'C++', 'Python')
(2, 2, 1)
更新
请注意,您应该使用追加而不是扩展。正如@SpghttCd 指出的那样。
你正在迭代一个字典,这意味着迭代变量将保存每个键。
因此,您的语言是所有 items
(即键)的列表,流行度是所有 Counter[item](即值)的列表:
示例:
d = {'Java' : 2, 'C++' : 2, 'Python' : 1}
languages = []
popularity = []
for item in d:
languages.append(item)
popularity.append(d[item])
# languages
# ['Java', 'C++', 'Python']
# popularity
# [2, 2, 1]
with open('data2.csv','r') as data:
reader = csv.DictReader(data)
counter = Counter()
languages = []
popularity = []
for line in reader:
counter.update(line['\ufeffProgramming language'].split(','))
for item in counter:
languages.extend(item[0])
popularity.extend(item[1])
print(counter)
print(languages)
print(popularity)
输出:
Counter({'Java' : 2, 'C++' : 2, 'Python' : 1})
['P', 'J', 'C']
['y', 'a', '+']
为什么当我尝试将计数器的值分成两部分(即语言和流行度)时,我得到了一个奇怪的结果?
您需要迭代计数器的 items:
for item in counter.items():
languages.append(item[0])
popularity.append(item[1])
目前你在做:
for item in counter:
languages.extend(item[0])
popularity.extend(item[1])
这只遍历键,所以当你做 item[0]
时你得到键的第一个字符,这也适用于 item[1]
。因此你得到:
['P', 'J', 'C']
['y', 'a', '+']
你的按键对应的第一个和第二个字母。另一种可能更 pythonic 的方法是使用 zip:
counter = {'Java' : 2, 'C++' : 2, 'Python' : 1}
languages, popularity = zip(*counter.items())
print(languages)
print(popularity)
输出
('Java', 'C++', 'Python')
(2, 2, 1)
更新
请注意,您应该使用追加而不是扩展。正如@SpghttCd 指出的那样。
你正在迭代一个字典,这意味着迭代变量将保存每个键。
因此,您的语言是所有 items
(即键)的列表,流行度是所有 Counter[item](即值)的列表:
示例:
d = {'Java' : 2, 'C++' : 2, 'Python' : 1}
languages = []
popularity = []
for item in d:
languages.append(item)
popularity.append(d[item])
# languages
# ['Java', 'C++', 'Python']
# popularity
# [2, 2, 1]