小编Nic*_*ung的帖子

按第二个值排序元组列表,reverse = True,然后按键,reverse = False

我需要首先对字典进行排序,使用值进行排序reverse=True,对于重复值,按键排序,reverse=False

到目前为止,我有这个

dict = [('B', 3), ('A', 2), ('A', 1), ('I', 1), ('J', 1)]
sorted(dict.items(), key=lambda x: (x[1],x[1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

返回......

[('B', 3), ('A', 2), ('J', 1), ('I', 1), ('A', 1)]
Run Code Online (Sandbox Code Playgroud)

但我需要它:

[('B', 3), ('A', 2), ('A', 1), ('I', 1), ('J', 1)]
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,当值相等时,我只能按指定的方式对键进行排序......但是如何让它们以越来越多的方式排序呢?

python sorting reverse dictionary

28
推荐指数
2
解决办法
4万
查看次数

MRjob:减速机可以执行2次操作吗?

我试图得出映射器生成的每个键值对的概率.

所以,让我们说mapper产量:

a, (r, 5)
a, (e, 6)
a, (w, 7)
Run Code Online (Sandbox Code Playgroud)

我需要添加5 + 6 + 7 = 18,然后找到概率5/18,6/18,7/18

所以减速器的最终输出看起来像:

a, [[r, 5, 0.278], [e, 6, 0.33], [w, 7, 0.389]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只能得到reducer来从值中求和所有整数.如何让它返回并将每个实例除以总和?

谢谢!

python mapreduce mrjob

2
推荐指数
1
解决办法
2078
查看次数

MRJOB 打开 JSON 文件 - Python

我试图加载一个 json 文件作为映射器函数的一部分,但它返回“目录中没有这样的文件”,尽管该文件存在。

我已经打开一个文件并解析它的行。但想要将其一些值与第二个 JSON 文件进行比较。

from mrjob.job import MRJob
import json
import nltk
import re    

WORD_RE = re.compile(r"\b[\w']+\b")
sentimentfile = open('sentiment_word_list_stemmed.json') 

def mapper(self, _, line):
    stemmer = nltk.PorterStemmer()
    stems = json.loads(sentimentfile)

    line = line.strip()
    # each line is a json line
    data = json.loads(line)
    form = data.get('type', None)

    if form == 'review':
      bs_id = data.get('business_id', None)
      text = data['text']
      stars = data['stars']

      words = WORD_RE.findall(text)
      for word in words:
        w = stemmer.stem(word)
        senti = stems.get[w]

        if senti:
          yield (bs_id, …
Run Code Online (Sandbox Code Playgroud)

python mrjob

2
推荐指数
1
解决办法
1713
查看次数

标签 统计

python ×3

mrjob ×2

dictionary ×1

mapreduce ×1

reverse ×1

sorting ×1