Рубрики
Без рубрики

Работа с данными

2. Работа с данными 2.1. Списки мы уже видели быстрое введение в списки в предыдущей статье … С тегом Python, начинающих, Codenewbie, написание.

2. Работа с данными 2.1. Списки Мы уже видели быстрое введение в списки в предыдущей статье.

>>> [1, 2, 3, 4]
[1, 2, 3, 4]
>>> ["hello", "world"]
["hello", "world"]
>>> [0, 1.5, "hello"]
[0, 1.5, "hello"]
>>> [0, 1.5, "hello"]
[0, 1.5, "hello"]

Список может содержать другой список в качестве члена.

>>> a = [1, 2]
>>> b = [1.5, 2, a]
>>> b
[1.5, 2, [1, 2]]

Встроенная функция Диапазон можно использовать для создания последовательности последовательных целых чисел.

Диапазон Функция возвращает объект специального диапазона, который ведет себя как список. Чтобы получить реальный список из него, вы можете использовать функцию списка.

>>> x = range(1, 4)
>>> x
range(1, 4)
>>> x[0]
1
>>> len(x)
3

Встроенная функция Лен может быть использован, чтобы найти длину списка.

>>> a = [1, 2, 3, 4]
>>> len(a)
4

+ и * Операторы работают даже в списках.

>>> a = [1, 2, 3]
>>> b = [4, 5]
>>> a + b
[1, 2, 3, 4, 5]
>>> b * 3
[4, 5, 4, 5, 4, 5]

Список можно проиндексировать для получения отдельных записей. Значение индекса может перейти от 0 до (длина списка – 1).

>>> x = [1, 2]
>>> x[0]
1
>>> x[1]
2

Когда используется неправильный индекс, Python выдает ошибку.

>>> x = [1, 2, 3, 4]
>>> x[6]
Traceback (most recent call last):
  File "", line 1, in ?
IndexError: list index out of range
Negative indices can be used to index the list from right.
>>> x = [1, 2, 3, 4]
>>> x[-1]
4
>>> x [-2]
3

Мы можем использовать нарезку списка, чтобы получить часть списка.

>>> x = [1, 2, 3, 4]
>>> x[0:2]
[1, 2]
>>> x[1:4]
[2, 3, 4]

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

>>> x[0:-1]
[1, 2, 3]

Индексы среза имеют полезные значения по умолчанию; Пропущенный первый индекс по умолчанию по ноль, пропущенный второй индекс по умолчанию размером с нарезанный список.

>>> x = [1, 2, 3, 4]
>>> a[:2]
[1, 2]
>>> a[2:]
[3, 4]
>>> a[:]
[1, 2, 3, 4]

Необязательный третий индекс может быть использован для указания приращения, который по умолчанию до 1.

>>> x = range(10)
>>> x
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x[0:6:2]
[0, 2, 4]

Мы можем отменить список, просто предоставив -1 для приращения.

>>> x[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

Участники списка могут быть изменены с помощью назначения.

>>> x = [1, 2, 3, 4]
>>> x[1] = 5
>>> x
[1, 5, 3, 4]

Присутствие ключа в списке может быть проверено с помощью в оператор.

>>> x = [1, 2, 3, 4]
>>> 2 in x
True
>>> 10 in x
False

Значения могут быть добавлены в список, позвонив Приложение Метод в списке. Метод похож на функцию, но он связан с объектом и может получить доступ к этому объекту, когда он вызван. Мы узнаем больше о методах, когда изучаем занятия.

>>> a = [1, 2]
>>> a.append(3)
>>> a
[1, 2, 3]

Проблема 1: Каковы будут результаты следующей программы?

x = [0, 1, [2]]
x[2][0] = 3
print(x)
x[2].append(4)
print(x)
x[2] = 2
print(x)

2.1.1. Для утверждения Python предоставляет для Заявление о переходе через список. A для оператор выполняет указанный блок кода для каждого элемента в списке.

for x in [1, 2, 3, 4]:
    print(x)

for i  in range(10):
   print(i, i*i, i*i*i)

Встроенная функция Zip принимает два списка и списка возвратов пар.

>>> zip(["a", "b", "c"], [1, 2, 3])
[('a', 1), ('b', 2), ('c', 3)]

Это удобно, когда мы хотим перекончить с двумя списками вместе.

names = ["a", "b", "c"]
values = [1, 2, 3]
for name, value in zip(names, values):
    print(name, value)

Проблема 2: Python имеет встроенную сумму функции, чтобы найти сумма Из всех элементов списка. Предоставьте реализацию для сумма Анкет

>>> sum([1, 2, 3])
>>> 6

Проблема 3: Что происходит, когда выше сумма Функция вызывается со списком строк? Вы можете сделать свой сумма Функциональная работа также для списка строк.

>>> sum(["hello", "world"])
"helloworld"
>>> sum(["aa", "bb", "cc"])
"aabbcc"

Проблема 4: Реализовать функцию Продукт , чтобы вычислить продукт списка чисел.

>>> product([1, 2, 3])
6

Проблема 5: Напишите функцию Фактор Чтобы вычислить фактор по числу. Вы можете использовать Продукт Функция определена в предыдущем примере для вычисления факториала?

>>> factorial(4)
24

Задача 6: Напишите функцию Обратный Чтобы изменить список. Можете ли вы сделать это без использования списка нарезки?

>>> reverse([1, 2, 3, 4])
[4, 3, 2, 1]
>>> reverse(reverse([1, 2, 3, 4]))
[1, 2, 3, 4]

Проблема 7: Python имеет встроенные функции мин и Макс Вычислить минимум и максимум данного списка. Предоставьте реализацию для этих функций. Что происходит, когда вы называете свой мин и Макс Функции со списком строк?

Задача 8: Кумулятивная сумма списка [A, B, C, ...] определяется как [a, a+b, a+b+c, ...] . Напишите функцию кумулятивная_sum Вычислить кумулятивную сумму списка. Ваша реализация работает для списка строк?

>>> cumulative_sum([1, 2, 3, 4])
[1, 3, 6, 10]
>>> cumulative_sum([4, 3, 2, 1])
[4, 7, 9, 10]

Проблема 9: Напишите функцию кумулятивный_продукт Вычислить кумулятивный продукт списка чисел.

>>> cumulative_product([1, 2, 3, 4])
[1, 2, 6, 24]
>>> cumulative_product([4, 3, 2, 1])
[4, 12, 24, 24]

Задача 10: Напишите функцию уникальный Чтобы найти все уникальные элементы списка.

>>> unique([1, 2, 1, 3, 2, 5])
[1, 2, 3, 5]

Задача 11: Напишите функцию Dups Чтобы найти все дубликаты в списке.

>>> dups([1, 2, 1, 3, 2, 5])
[1, 2]

Задача 12: Напишите функцию Группа (список, размер) Это займет список и разделяется на меньшие списки заданного размера.

>>> group([1, 2, 3, 4, 5, 6, 7, 8, 9], 3)
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> group([1, 2, 3, 4, 5, 6, 7, 8, 9], 4)
[[1, 2, 3, 4], [5, 6, 7, 8], [9]]

2.1.2. Списки сортировки Метод сортировки сортирует список на месте.

>>> a = [2, 10, 4, 3, 7]
>>> a.sort()
>>> a
[2, 3, 4, 7 10]

Встроенная функция отсортированная возвращает новый отсортировано Список без изменения исходного списка.

>>> a = [4, 3, 5, 9, 2]
>>> sorted(a)
[2, 3, 4, 5, 9]
>>> a
[4, 3, 5, 9, 2]

Поведение сортировка Метод и отсортировано Функция точно такая же, за исключением того, что отсортированный возвращает новый список вместо изменения данного списка.

сортировка Метод работает, даже когда список имеет разные типы объектов и даже списки.

>>> a = ["hello", 1, "world", 45, 2]
>>> a.sort()
>>> a
[1, 2, 45, 'hello', 'world']
>>> a = [[2, 3], [1, 6]]
>>> a.sort()
>>> a
[[1, 6], [2, 3]]

При желании мы можем указать функцию как ключ сортировки.

>>> a = [[2, 3], [4, 6], [6, 1]]
>>> a.sort(key=lambda x: x[1])
>>> a
[[6, 1], [2, 3],  [4 6]]

Это сортирует все элементы списка на основе значения второго элемента каждой записи.

Задача 13: Напишите функцию Lensort Сортировать список строк в зависимости от длины.

>>> lensort(['python', 'perl', 'java', 'c', 'haskell', 'ruby'])
['c', 'perl', 'java', 'ruby', 'python', 'haskell']

Задача 14: Улучшите уникальную функцию, написанную в предыдущих задачах, чтобы выполнить необязательную функцию ключа в качестве аргумента и использовать возвращаемое значение функции ключа для проверки уникальности.

>>> unique(["python", "java", "Python", "Java"], key=lambda s: s.lower())
["python", "java"]

2.2. КУТУ Тупел – это тип последовательности, как список , но это неизбежно. Тупель состоит из ряда значений, разделенных запятыми.

>>> a = (1, 2, 3)
>>> a[0]
1

Прилагающие брекеты необязательны.

>>> a = 1, 2, 3
>>> a[0]
1

Встроенная функция Лен И нарезка работает и на кортежах.

>>> len(a)
3
>>> a[1:]
2, 3

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

>>> a = (1)
>> a
1
>>> b = (1,)
>>> b
(1,)
>>> b[0]
1

2.3. Наборы Наборы – это неупорядоченная коллекция уникальных элементов.

>>> x = set([3, 1, 2, 1])
set([1, 2, 3])

Python 2.7 представил новый способ написания наборов.

>>> x = {3, 1, 2, 1}
set([1, 2, 3])

Новые элементы могут быть добавлены в набор, используя метод добавления.

>>> x = set([1, 2, 3])
>>> x.add(4)
>>> x
set([1, 2, 3, 4])

Как и списки, существование элемента может быть проверено с помощью в оператор. Тем не менее, эта операция быстрее в наборах по сравнению с списками.

>>> x = set([1, 2, 3])
>>> 1 in x
True
>>> 5 in x
False

Задача 15: Повторение уникальный Функция реализована в более ранних примерах с использованием наборов.

2.4. Строки Строки также ведут себя как списки во многих отношениях. Длина строки можно найти с помощью встроенной функции Лен Анкет

>>> len("abrakadabra")
11

Индексация и нарезка на строках ведут себя аналогично спискам.

>>> a = "helloworld"
>>> a[1]
'e'
>>> a[-2]
'l'
>>> a[1:5]
"ello"
>>> a[:5]
"hello"
>>> a[5:]
"world"
>>> a[-2:]
'ld'
>>> a[:-2]
'hellowor'
>>> a[::-1]
'dlrowolleh'

в Оператор можно использовать для проверки, присутствует ли строка в другой строке.

>>> 'hell' in 'hello'
True
>>> 'full' in 'hello'
False
>>> 'el' in 'hello'
True

Есть много полезных методов на строках.

Сплит Метод расщепляет строку, используя разделитель. Если разделитель не указан, он использует какую -либо пробел -символ в качестве разделителя.

>>> "hello world".split()
['hello', 'world']
>>> "a,b,c".split(',')
['a', 'b', 'c']

Присоединяйтесь Метод соединяет список строк.

>>> " ".join(['hello', 'world'])
'hello world'
>>> ','.join(['a', 'b', 'c'])

полоса Метод возвращает копию данной строки с удаленным пробелом и следами. При желании строка может быть передана в качестве аргумента для удаления символов из этой строки вместо пробела.

>>> ' hello world\n'.strip()
'hello world'
>>> 'abcdefgh'.strip('abdh')
'cdefg'

Python поддерживает форматирование значений в строки. Хотя это может включать в себя очень сложные выражения, самое основное использование – вставить значения в строку с заполнителем %.

>>> a = 'hello'
>>> b = 'python'
>>> "%s %s" % (a, b)
'hello python'
>>> 'Chapter %d: %s' % (2, 'Data Structures')

2.5. Работа с файлами Python обеспечивает встроенную функцию Open Чтобы открыть файл, который возвращает объект файла.

f = open('foo.txt', 'r') # open a file in read mode
f = open('foo.txt', 'w') # open a file in write mode
f = open('foo.txt', 'a') # open a file in append mode

Второй аргумент Open Необязательно, что по умолчанию 'r' когда не указано.

Unix не отличает двоичные файлы от текстовых файлов, но Windows делает. В Windows 'rb' , 'wb' , 'ab' следует использовать для открытия двоичного файла в режиме чтения, записи и добавления соответственно.

Самый простой способ прочитать содержимое файла – это использование Читать метод

>>> open('foo.txt').read()
'first line\nsecond line\nlast line\n'

Содержание файла можно считать по строке с использованием readline и Readlines методы readline Метод возвращает пустую строку, когда больше нечего читать в файле.

>>> open('foo.txt').readlines()
['first line\n', 'second line\n', 'last line\n']
>>> f = open('foo.txt')
>>> f.readline()
'first line\n'
>>> f.readline()
'second line\n'
>>> f.readline()
'last line\n'
>>> f.readline()
''

написать Метод используется для записи данных в файл, открытый в режиме записи или добавления.

>>> f = open('foo.txt', 'w')
>>> f.write('a\nb\nc')
>>> f.close()

>>> f.open('foo.txt', 'a')
>>> f.write('d\n')
>>> f.close()

Writelines Метод удобен в использовании, когда данные доступны в виде списка строк.

>>> f = open('foo.txt')
>>> f.writelines(['a\n', 'b\n', 'c\n'])
>>> f.close()

2.5.1. Пример: количество слов Давайте попробуем вычислить количество символов, слов и строк в файле.

Количество символов в файле совпадает с длиной его содержимого.

def charcount(filename):
    return len(open(filename).read())

Количество слов в файле можно найти, разделяя содержимое файла.

def wordcount(filename):
    return len(open(filename).read().split())

Количество строк в файле можно найти из метода READLINES.

def linecount(filename):
    return len(open(filename).readlines())

Задача 17: Напишите программу React.py печатать строки файла в обратном порядке.

$ cat she.txt
She sells seashells on the seashore;
The shells that she sells are seashells I'm sure.
So if she sells seashells on the seashore,
I'm sure that the shells are seashore shells.

$ python reverse.py she.txt
I'm sure that the shells are seashore shells.
So if she sells seashells on the seashore,
The shells that she sells are seashells I'm sure.
She sells seashells on the seashore;

Задача 18: Напишите программу для печати каждой строки файла в обратном порядке.

Проблема 19: Реализовать команды UNIX голова и хвост . голова и хвост Команды принимают файл в качестве аргумента и печатают его первые и последние 10 строк файла соответственно.

Задача 20: Реализовать команду UNIX грип . Греп Команда принимает строку и файл в качестве аргументов и печатает все строки в файле, которые содержат указанную строку.

$ python grep.py she.txt sure
The shells that she sells are seashells I'm sure.
I'm sure that the shells are seashore shells.

Задача 21: Напишите программу wrap.py Это требует имени файла и ширины в качестве выходов и завершает линии длиннее ширина .

$ python wrap.py she.txt 30
I'm sure that the shells are s
eashore shells.
So if she sells seashells on t
he seashore,
The shells that she sells are
seashells I'm sure.
She sells seashells on the sea
shore;

Задача 22: Приведенная выше программа обертывания не так хороша, потому что она разбивает черту в середине любого слова. Вы можете написать новую программу WordWrap.py это работает как wrap.py , но разрывает строку только на границах слова?

$ python wordwrap.py she.txt 30
I'm sure that the shells are
seashore shells.
So if she sells seashells on
the seashore,
The shells that she sells are
seashells I'm sure.
She sells seashells on the
seashore;

Проблема 23: Напишите программу center_align.py Центр выравнивает все строки в данном файле.

$ python center_align.py she.txt
  I'm sure that the shells are seashore shells.
    So if she sells seashells on the seashore,
The shells that she sells are seashells I'm sure.
       She sells seashells on the seashore;

2.6. Список понимания Список понимания предоставляет краткий способ создания списков. Много раз сложную задачу может быть смоделирована в одной строке.

Вот несколько простых примеров для преобразования списка.

>>> a = range(10)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [x for x in a]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [x*x for x in a]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> [x+1 for x in a]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Также возможно отфильтровать список, используя Если Внутри понимания списка.

>>> a = range(10)
>>> [x for x in a if x % 2 == 0]
[0, 2, 4, 6, 8]
>>> [x*x for x in a if x%2 == 0]
[0, 4, 8, 36, 64]

Можно итерацию по нескольким спискам, используя встроенную функцию молния .

>>> a = [1, 2, 3, 4]
>>> b = [2, 3, 5, 7]
>>> zip(a, b)
[(1, 2), (2, 3), (3, 5), (4, 7)]
>>> [x+y for x, y in zip(a, b)]
[3, 5, 8, 11]

Мы можем использовать несколько для Положения в едином понимании списка.

>>> [(x, y) for x in range(5) for y in range(5) if (x+y)%2 == 0]
[(0, 0), (0, 2), (0, 4), (1, 1), (1, 3), (2, 0), (2, 2), (2, 4), (3, 1), (3, 3), (4, 0), (4, 2), (4, 4)]

>>> [(x, y) for x in range(5) for y in range(5) if (x+y)%2 == 0 and x != y]
[(0, 2), (0, 4), (1, 3), (2, 0), (2, 4), (3, 1), (4, 0), (4, 2)]

>>> [(x, y) for x in range(5) for y in range(x) if (x+y)%2 == 0]
[(2, 0), (3, 1), (4, 0), (4, 2)]

В следующем примере все пифагорейские триплеты с использованием чисел ниже 25. (x, y, z) это называемый пифагорейский триплет, если x*x + y*y*z Анкет

>>> n = 25
>>> [(x, y, z) for x in range(1, n) for y in range(x, n) for z in range(y, n) if x*x + y*y == z*z]
[(3, 4, 5), (5, 12, 13), (6, 8, 10), (8, 15, 17), (9, 12, 15), (12, 16, 20)]

Задача 24: Предоставьте реализацию для функции ZIP, используя понимание списков.

>>> zip([1, 2, 3], ["a", "b", "c"])
[(1, "a"), (2, "b"), (3, "c")]

Задача 25: Python обеспечивает встроенную функцию карта Это применяет функцию к каждому элементу списка. Предоставьте реализацию для карты с использованием понимания списков.

>>> def square(x): return x * x
...
>>> map(square, range(5))
[0, 1, 4, 9, 16]

Задача 26: Python обеспечивает встроенную функцию Фильтр (F, A) Это возвращает элементы списка A, для которого f (пункт) Возвращает правда. Предоставьте реализацию для фильтр Использование понимания списка.

>>> def even(x): return x %2 == 0
...
>>> filter(even, range(10))
[0, 2, 4, 6, 8]

Проблема 27: Напишите функцию триплеты Это требует числа n в качестве аргумента и возвращает список триплетов, такую, что сумма первых двух элементов триплета равна третьему элементу, используя цифры ниже n. Обратите внимание, что (A, B, C) и (B, A, C) представляют ту же тройлю.

>>> triplets(5)
[(1, 1, 2), (1, 2, 3), (1, 3, 4), (2, 2, 4)]

Задача 28: Напишите функцию перечислять Это берет список и возвращает список кортежей, содержащих (Индекс, элемент) для каждого элемента в списке.

>>> enumerate(["a", "b", "c"])
[(0, "a"), (1, "b"), (2, "c")]
>>> for index, value in enumerate(["a", "b", "c"]):
...     print(index, value)
0 a
1 b
2 c

Задача 29: Напишите функцию массив создать двухмерный массив. Функция должна принимать оба измерения в качестве аргументов. Значение каждого элемента может быть инициализировано никто:

>>> a = array(2, 3)
>>> a
[[None, None, None], [None, None, None]]
>>> a[0][0] = 5
[[5, None, None], [None, None, None]]

Проблема 30: Напишите функцию Python parse_csv Для анализа файлов CSV (разделенных запятых значений).

>>> print(open('a.csv').read())
a,b,c
1,2,3
2,3,4
3,4,5
>>> parse_csv('a.csv')
[['a', 'b', 'c'], ['1', '2', '3'], ['2', '3', '4'], ['3', '4', '5']]

Проблема 31: Ободрите вышеуказанную реализацию анализатора CSV для поддержки любого разделителя и комментариев.

>>> print(open('a.txt').read())
# elements are separated by ! and comment indicator is #
a!b!c
1!2!3
2!3!4
3!4!5
>>> parse('a.txt', '!', '#')
[['a', 'b', 'c'], ['1', '2', '3'], ['2', '3', '4'], ['3', '4', '5']]

Проблема 32: Напишите функцию мутат Вычислить все слова, сгенерированные одной мутацией на данном словом. Мутация определяется как вставка символа, удаление символа, замену символа или обмену 2 последовательными символами в строке. Для простоты рассмотрим только буквы от A к z Анкет

>>> words = mutate('hello')
>>> 'helo' in words
True
>>> 'cello' in words
True
>>> 'helol' in words
True

Проблема 33: Напишите функцию Почти_equal Чтобы проверить, являются ли две строки почти равны. Две строки A и b почти равны, когда A может быть сгенерирован одной мутацией на b .

>>> nearly_equal('python', 'perl')
False
>>> nearly_equal('perl', 'pearl')
True
>>> nearly_equal('python', 'jython')
True
>>> nearly_equal('man', 'woman')
False

2.7. Словари Словари подобны спискам, но они также могут быть проиндексированы с не целочисленными ключами. В отличие от списков, словари не заказаны.

>>> a = {'x': 1, 'y': 2, 'z': 3}
>>> a['x']
1
>>> a['z']
3
>>> b = {}
>>> b['x'] = 2
>>> b[2] = 'foo'
>>> b[(1, 2)] = 3
>>> b
{(1, 2): 3, 'x': 2, 2: 'foo'}

del Ключевое слово можно использовать для удаления элемента из словаря.

>>> a = {'x': 1, 'y': 2, 'z': 3}
>>> del a['x']
>>> a
{'y': 2, 'z': 3}

Ключи Метод возвращает все ключи в словаре, Значения Метод возвращает все значения в словаре и Предметы Метод возвращает все пары ключевых значений в словаре.

>>> a.keys()
['x', 'y', 'z']
>>> a.values()
[1, 2, 3]
>>> a.items()
[('x', 1), ('y', 2), ('z', 3)]

для Заявление можно использовать для итерации над словарем.

>>> for key in a: print(key)
...
x
y
z
>>> for key, value in a.items(): print(key, value)
...
x 1
y 2
z 3

Наличие ключа в словаре может быть проверено с использованием в оператор или has_key метод

>>> 'x' in a
True
>>> 'p' in a
False
>>> a.has_key('x')
True
>>> a.has_key('p')
False

Другими полезными методами словарей являются получить и SetDefault Анкет

>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> d.get('x', 5)
1
>>> d.get('p', 5)
5
>>> d.setdefault('x', 0)
1
>>> d
{'x': 1, 'y': 2, 'z': 3}
>>> d.setdefault('p', 0)
0
>>> d
{'y': 2, 'x': 1, 'z': 3, 'p': 0}

Словари можно использовать в форматировании строки для указания именованных параметров.

>>> 'hello %(name)s' % {'name': 'python'}
'hello python'
>>> 'Chapter %(index)d: %(name)s' % {'index': 2, 'name': 'Data Structures'}
'Chapter 2: Data Structures'

2.7.1. Пример: частота слов Предположим, мы хотим найти количество случаев каждого слова в файле. Словарь может быть использован для хранения количества случаев для каждого слова.

Давайте сначала напишем функцию, чтобы считать частоту слов, учитывая список слов.

def word_frequency(words):
    """Returns frequency of each word given a list of words.

        >>> word_frequency(['a', 'b', 'a'])
        {'a': 2, 'b': 1}
    """
    frequency = {}
    for w in words:
        frequency[w] = frequency.get(w, 0) + 1
    return frequency

Получение слов из файла очень тривиально.

def read_words(filename):
    return open(filename).read().split()

Мы можем объединить эти две функции, чтобы найти частоту всех слов в файле.

def main(filename):
    frequency = word_frequency(read_words(filename))
    for word, count in frequency.items():
        print(word, count)

if __name__ == "__main__":
    import sys
    main(sys.argv[1])

Проблема 34: Улучшите вышеупомянутую программу для печати слов в порядке убывания количества случаев.

Проблема 35: Напишите программу для подсчета частоты символов в данном файле. Можете ли вы использовать частоту символов, чтобы определить, является ли данный файл файлом программы Python, файлом программы C или текстовым файлом?

Проблема 36: Напишите программу, чтобы найти анаграммы в данном списке слов. Два слова называются анаграммами, если одно слово можно сформировать путем перестройки букв другого. Например, «ешь», «съели» и «чай» – это анаграммы.

>>> anagrams(['eat', 'ate', 'done', 'tea', 'soup', 'node'])
[['eat', 'ate', 'tea], ['done', 'node'], ['soup']]

Проблема 37: Напишите функцию Valuesort сортировать значения словаря на основе ключа.

>>> valuesort({'x': 1, 'y': 2, 'a': 3})
[3, 1, 2]

Проблема 38: Напишите функцию invertdict обменивать ключи и значения в словаре. Для простоты предположим, что все значения уникальны.

>>> invertdict({'x': 1, 'y': 2, 'z': 3})
{1: 'x', 2: 'y', 3: 'z'}

2.7.2. Понимание среды исполнения Python Python хранит переменные, которые мы используем в качестве словаря. Globals () Функция возвращает все переменные Globals в текущей среде.

>>> globals()
{'__builtins__': , '__name__': '__main__', '__doc__': None}
>>> x = 1
>>> globals()
{'__builtins__': , '__name__': '__main__', '__doc__': None, 'x': 1}
>>> x = 2
>>> globals()
{'__builtins__': , '__name__': '__main__', '__doc__': None, 'x': 2}
>>> globals()['x'] = 3
>>> x
3

Так же, как глобальные вещества Python также обеспечивает функцию местные жители который дает все локальные переменные в функции.

>>> def f(a, b): print(locals())
...
>>> f(1, 2)
{'a': 1, 'b': 2}

Еще один пример:

>>> def f(name):
...     return "Hello %(name)s!" % locals()
...
>>> f("Guido")
Hello Guido!

Оригинал: “https://dev.to/estherwavinya/working-with-data-5ec0”