Python - читаемый список объектов

Вы можете сделать это с помощью , уменьшить .

  1. Сначала объедините оба массива, используя concat.
  2. Теперь в объединенном массиве с помощью reduce мы проверяем, присутствует ли свойство объекта в output, чем добавляем times и other в существующее свойство, если нет, то добавляем новое свойство.

const initial= [{name: 'a', times: 40, other: 50},{name: 'b', times: 10, other: 15},{name: 'c', times: 15, other: 12}];
const toBeMerged= [{name: 'a', times: 45, other: 30},{name: 'c', times: 10, other: 10},{name: 'd', times: 23, other: 10}];
let temp = initial.concat(toBeMerged)

let op = temp.reduce((output,current)=>{
  if( output[current.name] ){
    output[current.name].times += current.times
    output[current.name].other += current.other
  } else{
    output[current.name] = current;
  }
  return output;
},{})

console.log(Object.values(op))

5
задан S.Lott 14 January 2009 в 19:59
поделиться

5 ответов

Если Вы хотите просто отобразить конкретный атрибут каждого экземпляра класса, можно сделать

print([obj.attr for obj in my_list_of_objs])

Который распечатает attr атрибут каждого объекта в списке my_list_of_objs. С другой стороны, можно определить __str__() метод для Вашего класса, который указывает, как преобразовать Ваши объекты в строки:

class evolutions:
    def __str__(self):
        # return string representation of self

print(my_list_of_objs)  # each object is now printed out according to its __str__() method
8
ответ дан 18 December 2019 в 08:31
поделиться

Вы захотите переопределить свой класс, "для строкового представления" метода:

class Foo:
    def __str__(self):
        return "String representation of me"
4
ответ дан 18 December 2019 в 08:31
поделиться

Контроль __ ул. __ () и __ repr __ () методы.

См. http://docs.python.org/reference/datamodel.html#object.__repr__

4
ответ дан 18 December 2019 в 08:31
поделиться

Необходимо переопределить любого __str__, или __repr__ методы Вашего объекта [s]

2
ответ дан 18 December 2019 в 08:31
поделиться

Я предпочитаю определять функцию __ repr __ , которая может восстанавливать объект (когда это возможно). Если у вас нет __ str __ , то и repr () и str () будут вызывать этот метод.

Так, например,

class Foo(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __repr__(self):
        return 'Foo(%r, %r)' % (self.a, self.b)

Делать это таким образом, у вас есть читаемая строковая версия, и в качестве бонуса ее можно получить, чтобы получить копию оригинального объекта.

x = Foo(5, 1 + 1)
y = eval(str(x))

print y
-> Foo(5, 2)
1
ответ дан 18 December 2019 в 08:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: